如何整齐地查询相应的对象数组项?

时间:2014-06-03 19:06:54

标签: c# linq lambda

我有一系列对象可以用于某些过程。

var x = new List<MyObject>() { new MyObject(), new MyObject(), ... }.ToArray();

在该过程之后,它返回与每个输入对象相对应的结果数组。

var y = MyProcess(x); // returns List<MyResult>

现在,我的问题是如何查询具有给定条件和相应输入对象的结果列表?

例如,如果y[2].IsOkayfalse,我想在另一个数组中获取x[2]y[2]。 并且数组x和y中的对象不具有除索引之外的引用键。

1 个答案:

答案 0 :(得分:4)

好吧,您可以使用Zip配对它们:

var pairs = x.Zip(y, (a, b) => new { a, b })
             .Where(pair => !pair.b.IsOkay)
             .ToArray();

如果需要,您可以更改传递给Zip的委托以不同的方式组合这两个值 - 例如,使用命名类型而不是我上面提到的匿名类型。