我有一个收藏。我想选择符合 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/