如果我有一个看起来像这样的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) //?
{
}
答案 0 :(得分:92)
您应该尽量避免使用Count()
方法来检查序列是否为空。 Phil Haack已经an excellent article on his blog讨论了这个反模式。
Count()
实际上必须枚举序列的所有元素 - 如果序列基于多个LINQ操作(或来自数据库),这可能很昂贵。
您应该使用Any()
扩展方法 - 它只会尝试查看列表中是否至少有一个元素,但不会枚举整个序列。
if( !LinqResult.Any() )
{
// your code
}
答案 1 :(得分:16)
if(!LinqResult.Any()) //?
{
}