Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查对数据库的查询是否为空_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 检查对数据库的查询是否为空

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发送一条消息,说明没有匹配项,或者在视图中

控制器中的action方法接收一个值,如两个字母。代码检查表中是否包含这些字母。我将此代码用于该任务:

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