c# – 如果Linq结果为空

如果我有一个像这样的linq查询,我如何检查查询是否没有找到结果?

var LinqResult = 
    from a in Db.Table
    where a.Value0 == "ninja"
    group a by a.Value1 into b
    select new { Table = b};

if(LinqResult.Count() == 0) //?
{

}
您应该尽量避免使用Count()方法作为检查序列是否为空的方法。 Phil Haack有an excellent article on his blog,他讨论这个反模式。

Count()必须实际枚举序列的所有元素 – 如果序列基于多个LINQ操作(或来自数据库),这可能很昂贵。

您应该使用Any()扩展方法,而不是尝试查看列表中是否至少有一个元素,但不会枚举整个序列。

if( !LinqResult.Any() )
{ 
   // your code
} 

就个人而言,我也认为使用Any()而不是Count()更好地表达你的意图,并且在将来更容易重构或改变可靠。

顺便说一下,如果你真正想要的是序列的第一个(或唯一)成员,你应该使用First()Single()运算符。

http://stackoverflow.com/questions/3259895/if-linq-result-is-empty

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 如果Linq结果为空