我有一个收藏。我想选择符合 2 个条件的值。

var a;
var b;
foreach(SomeObject so in collection)
{
    if(so.Value == something)
    {
        a = so;
        // break if b is not null.
    }
    else if(so.Value == somethingElse)
    {
        b = so;
        // break if a is not null
    }
}

是否可以使用 linq 仅对集合进行一次迭代来完成上述操作?如果我们可以使用该事实,则某物只有一个值,而 somethingElse 则只有一个值。

最佳答案

此解决方案将列表缩小到两个元素,然后从那里开始。使用 Take(2) 以便仅在找到两个值之前搜索集合。

var matches = collection.Where(x => x.Value == something || x.Value == somethingElse)
                        .Take(2)
                        .ToList();
var a = matches.Single(x => x.Value == something);
var b = matches.Single(x => x.Value == somethingElse);

关于c# - 根据 2 个条件选择使用 linq,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12188072/

10-13 08:03
查看更多