从一个LINQ查询添加到两个不同的列表

时间:2013-12-28 12:36:26

标签: c# .net linq

我有两个列表(称为foo和bar),我想最小化LINQ查询的数量(好吧,我知道它们的开销很小,但是,两个查询需要两倍的时间,LINQ和iOS开发可以有问题)。查询将完全相同,但我想将结果添加到两个列表中。

我目前的代码如下所示

List<foo> foos = new List<foos>();
List<bar> bars = new List<bars>();

var agg = (from fa in mainList
           from pa in fa.subList
           from cg in pa.subSubList
           let cr = pa.anotherSubList
           where cg.DatePerformed.Year == DateTime.Now.Year - 1 && cr.Count != 0
           select foos.Add(fa)
           select bars.Add(pa));

编译器在第二次选择时抱怨。

有没有办法在LINQ中做我想做的事情,或者我需要使用两个循环?

1 个答案:

答案 0 :(得分:1)

您可以选择这两个项目并迭代结果,将一个项目添加到第一个列表,另一个项目添加到另一个列表。 你可以用一个可以同时包含两个项目,一个元组或只是一个匿名类型的类来做到这一点:

var result = from fa in mainList
    from pa in fa.subList
    from cg in pa.subSubList
    let cr = pa.anotherSubList
    where cg.DatePerformed.Year == DateTime.Now.Year - 1 && cr.Count != 0
    select new {First=fa, Second=pa};
foreach (var pair in result)
{
    foos.Add(pair.fa);
    bars.Add(pair.pa);
}