C# 检查对数据库的查询是否为空
控制器中的action方法接收一个值,如两个字母。代码检查表中是否包含这些字母。我将此代码用于该任务:C# 检查对数据库的查询是否为空,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,控制器中的action方法接收一个值,如两个字母。代码检查表中是否包含这些字母。我将此代码用于该任务: var result = db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper())); 但是,当没有任何匹配的字母时,如何检查结果变量是空的还是空的?我测试过这个,但它不起作用 If(result == ""){ // Do something } 我想使用Viewbag发送一条消息,说明没有匹配项,或者在视图中
var result = db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper()));
但是,当没有任何匹配的字母时,如何检查结果变量是空的还是空的?我测试过这个,但它不起作用
If(result == ""){
// Do something
}
我想使用Viewbag发送一条消息,说明没有匹配项,或者在视图中执行此检查。我在一些AJAX和局部视图中使用它,它工作得非常好,但如果没有匹配项,我只想显示一条消息。检查结果
值是空的还是空的最好方法是什么?试试这个,使用FirstOrDefault
它会给你结果的第一条记录,否则如果查询没有结果,它会返回默认值null
var result = db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper())).FirstOrDefault();
If(result == null){
// Do something
}
或者,如果要使用此结果,要操作代码中的某些内容,可以使用ToList()
。它将返回值列表,如果查询没有产生任何结果,那么列表计数将为0
var result = db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper())).ToList();
If(result.Count == 0){
// Do something
}
尝试此操作,使用FirstOrDefault
它将为您提供结果中的第一条记录,否则如果查询中没有生成结果,它将返回默认值null
var result = db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper())).FirstOrDefault();
If(result == null){
// Do something
}
或者,如果要使用此结果,要操作代码中的某些内容,可以使用ToList()
。它将返回值列表,如果查询没有产生任何结果,那么列表计数将为0
var result = db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper())).ToList();
If(result.Count == 0){
// Do something
}
代码不起作用,因为代码返回的是对象而不是字符串如果要返回字符串,则必须使用“Select”子句选择特定字段,如果要签入相同的代码,则修改:
var result=db.People.Where(b=>b.Name.ToUpper().Contains(filter.ToUpper()).ToList();
if(result!=null&&result.Count>0)
它将对您起作用。您的代码不起作用,因为代码返回的是对象而不是字符串。如果要返回字符串,则必须使用“Select”子句选择特定字段,如果要签入相同的代码,则修改:
var result=db.People.Where(b=>b.Name.ToUpper().Contains(filter.ToUpper()).ToList();
if(result!=null&&result.Count>0)
它会对你有用。最简单的方法就是使用!result.Any()
:
从MSDN开始:
Any()
确定序列是否包含任何元素
完全符合您的需要。最简单的方法是使用!result.Any()
:
从MSDN开始:
Any()
确定序列是否包含任何元素
完全符合您的需要。对于IEnumerable,我们可以使用Any(),您的代码可以写成
if(!db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper())).Any() {
// do some thing
}
对于IEnumerable,我们可以使用Any(),您的代码可以写成
if(!db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper())).Any() {
// do some thing
}
什么是结果类型?if(result!=null){//all good
提示:检查的返回值类型。什么是结果类型?if(result!=null){//all good
提示:检查的返回值类型。我认为这是所有答案中最好的,因为它用一个简单的解决方案回答了问题,提供了参考,并有意使用了一个功能--其他解决方案需要(对我来说)额外工作。+1我认为这是所有答案中最好的,因为它用一个简单的解决方案回答问题,提供参考,并有意使用某个功能——其他解决方案需要(对我来说)额外工作。+1