检查对DB的查询是否为空

时间:2016-03-09 10:24:53

标签: c# asp.net asp.net-mvc

控制器中的action方法接收一个值,就像几个字母一样。代码检查表中是否包含任何这些字母。我正在使用此代码执行该任务:

var result = db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper()));

但是,当没有任何匹配的字母时,如何检查result变量是空还是空?我对此进行了测试,但它无法正常工作!

If(result == ""){
// Do something
}

我想使用Viewbag发送一条消息,表明没有匹配或者可能在View中进行此检查。我在一些AJAX和部分视图中使用它并且它工作得很完美,但我只想在没有任何匹配时显示消息。检查result值是空还是空的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

最简单的方法是使用CoordinatorLayout

android:fitsSystemWindows="false"

来自IEnumerable上的MSDN:

  

<强>任何()

     

确定序列是否包含任何元素。

完全符合您的需要。

答案 1 :(得分:1)

试试这个,使用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
 }

答案 2 :(得分:1)

您的代码无效,因为如果您想返回一个字符串,代码返回一个对象而不是一个字符串,那么您必须使用“Select”子句来选择一个特定的字段,并且如果您想要检查相同的代码然后修改:

  

var result = db.People.Where(b =&gt; b.Name.ToUpper()。包含(filter.ToUpper()))。ToList();   if(结果!= null&amp;&amp; result.Count&gt; 0)

它适合你。

答案 3 :(得分:1)

对于IEnumerable,我们可以使用Any(),您的代码可以写成

if(!db.People.Where(b => b.Name.ToUpper().Contains(filter.ToUpper())).Any() {
// do some thing
}