检查所有列表中的X元素是否满足或超过值C#

时间:2018-05-13 15:31:17

标签: c# linq

我的代码中有一个变量,它是一个列表列表,我试图找出每个列表中第3个项目中有多少匹配或超过50的测试值。我知道这可以做到在一个简单的循环,但我想知道是否有一个更简单的方法来完成Linq或类似的任务

这就是我在循环中这样做的方式:

int count = 0;
foreach(var list in <IEnumerable<IEnumerable<double>> masterList)
{
    if (list.ElementAt(2) >= 50)
    {
         count++;
    }
}

有更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用LINQ Count

int count = masterList.Count(x => x.ElementAt(2) >= 50);

答案 1 :(得分:1)

如果您想使用LINQ,并且IEnumerable IEnumerable代表代码的问题(而不是像这样的问题列表文字说),你必须把CountElementAt(不是索引器)结合起来:

var count = masterList.Count(c => c.ElementAt(2) >= 50);

要小心,因为这只有在您保证所有可用物品至少有三个项目时才有效。如果底层枚举不是IList<T>(而是非物化IEnumerable),则调用可能会很昂贵,具体取决于您自那以后有多少“子列表”他们每个都必须迭代到第n个项目(幸运的是只有第三个​​在这种情况下,如果你需要可能会更糟,比如100,你有1000个)。