我有两个列表(称它们为 foo 和 bar),我想尽量减少 LINQ 查询的数量(好吧,我知道它们的开销很小,但是,两个查询仍然需要两倍的时间,而 LINQ with iOS development 可以有问题)。查询将完全相同,但我想将结果添加到两个列表中。
我现在的代码是这样的
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 中完成我想做的事情,还是我需要使用两个循环?
最佳答案
您可以选择这两个项目并遍历结果以将一个项目添加到第一个列表,将另一个添加到另一个列表。 您可以使用一个可以容纳这两个项目的类、一个元组或像这样的匿名类型来做到这一点:
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);
}
关于c# - 从一个 LINQ 查询添加到两个不同的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20814622/