如果我有一个看起来像这样的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) //?
{
}
Run Code Online (Sandbox Code Playgroud)
LBu*_*kin 95
您应该尽量避免使用该Count()方法来检查序列是否为空.Phil Haack 在他的博客上有一篇很好的文章,他在这篇文章中讨论了这个反模式.
Count() 实际上必须枚举序列的所有元素 - 如果序列基于多个LINQ操作(或来自数据库),这可能是昂贵的.
您应该使用Any()扩展方法 - 它只会尝试查看列表中是否至少有一个元素,但不会枚举整个序列.
if( !LinqResult.Any() )
{
// your code
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我也认为使用Any()而不是Count()更好地表达了您的意图,并且将来更容易重构或更改.
顺便说一句,如果你真正想要的是序列的第一个(或唯一的)成员,你应该使用First()或Single()运算符.
| 归档时间: |
|
| 查看次数: |
46071 次 |
| 最近记录: |