检查IQueryable结果集的最佳方法是null

huM*_*pty 39 c# linq asp.net

我只想知道检查IQueryable结果是否没有值的最佳方法是什么.

例如.如果我们有一个像这样的方法

public static IQueryable<Table> DisplayAll()
{
    var db = new DataContext();
    var list= from data in db.Table select data;
    return list;
}
Run Code Online (Sandbox Code Playgroud)

然后我们做这样的事情

var list = DisplayAll();
if(list != null)
{
     //do something --- in here even if the result set has no values it will
     // go to this line. It just say `enumeration yielded no results`
}
Run Code Online (Sandbox Code Playgroud)

检查结果集的任何可能方法都有内容与否?

谢谢

Jon*_*Jon 82

list将永远不会null与LINQ; 如果需要,它将简单地代表一个"空集合".测试的Any方法是使用扩展方法:

if (list.Any()) {
    // list has at least one item
}
Run Code Online (Sandbox Code Playgroud)

  • @HenkHolterman:为什么?我敢打赌,在这个特殊的例子中,`Any()`会导致`SELECT COUNT(*)...`和整数比较.即使它开始枚举结果集的愚蠢路线,"ToList"如何更快? (3认同)