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

标签 c# .net linq

我有两个列表(称它们为 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/

相关文章:

c# - 从数据库中提取大量数据时出现内存不足异常

c# - 如何在 winforms 上使用带有类库的应用程序设置?

c# - UWP Ctrl+F 实现

c# - MVC4 单元测试 NSubstitute 找不到要返回的调用

c# - 为什么完全限定的程序集名称有时需要空格?

c# - LINQ to SQL 插入行为中的非生成属性

c# - 使用Linq的Where/Select过滤掉null并将类型转换为不可为空的方法不能做成扩展方法

c# - TryParse 其他类型

c# - 为什么我不应该使用 PictureBox 控件?

c# - 重用 LINQ 选择功能