使用单个查询对整数集合进行LINQ优化

时间:2015-07-30 11:36:24

标签: c# linq

我有一个整数列表,如下所示

List<int> myCollection = new List<int> { 2625 };

我正在检查以下条件

if(myCollection.Count() == 1 && myCollection.Any(number=> number == 2625))
{
        // Do something
}

如何优化查询以便我可以同时包含单个查询条件? 注意:MyCollection可能包含多个元素,因此我使用了Any()。

3 个答案:

答案 0 :(得分:4)

一个明显的优化是使用List实例属性:

if(myCollection.Count == 1 && myCollection[0] == 2625))
{
        // Do something
}

答案 1 :(得分:1)

实际上,这里有一个查询。不是两个。由于您的收藏是一个列表,Count()将被解析为列表的Count属性。话虽如此,这里实际上不会发生任何事情

myCollection.Count() == 1 

除了获取Count的值。

唯一的查询在这里发生

myCollection.Any(number=> number == 2625)

此外,由于您检查Count是否为1的第一个条件,如果不是,则根本不会评估Any。 (这是因为我们使用了&&)。

答案 2 :(得分:-1)

我不确定你为什么这么想 优化它,但如果有一个元素,为什么要使用.Any()。

你可以简单地做

if(myCollection.Count() == 1 && myCollection.Single() == 2625)
 {
        // Do something
 }