c# - 带有大量嵌套列表的列表上的 LINQ

标签 c# linq

我在使用嵌套列表时遇到了麻烦。所以我有3个类(class):

public class Class1
{
   public string Name {get;set;}
   public List<Class2> Class2List {get;set;}
}
public class Class2
{
   public string Name {get;set;}
   public List<Class3> Class3List {get;set;}
}
public class Class3
{
   public string Name {get;set;}
}

我想从 Class1 中选择所有 Class3.Name 其中 Class2.Name = "something"并且重要的是结果将是 IEnumerable 字符串 .我该如何解决?

最佳答案

LINQ 表达式可以有多个嵌套 from条款:

// nested from clauses
var names = from c1 in myClass1List
            from c2 in c1.Class2List
            where c2.Name == "something"
            from c3 in c2.Class3List
            select c3.Name;

为了完整起见,这里有两个使用方法语法的变体:
var names = myClass1List
    .SelectMany(c1 => c1.Class2List.Where(c2 => c2.Name == "something"))
    .SelectMany(c2 => c2.Class3List.Select(c3 => c3.Name));

var names = myClass1List
    .SelectMany(c1 => c1.Class2List
        .Where(c2 => c2.Name == "something")
        .SelectMany(c2 => c2.Class3List
            .Select(c3 => c3.Name)));

关于c# - 带有大量嵌套列表的列表上的 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18736513/

相关文章:

vb.net - LINQ:排序依据(将字母视为数字)

C# Linq查找符合条件的记录,如果找到该记录则返回所有相关记录

c# - 在 Visual Studio 2012 中使用 newton.jsoft (json.net) 将 c# 翻译为 vb .net 时出现翻译错误

c# - 相交和任何或包含和任何。找到至少一个公共(public)元素哪个更有效?

c# - FileStream,从大文件中读取数据 block 。文件大小大于 int。如何设置偏移量?

c# - 泛型的继承

c# - 在通用 Windows 应用程序中,如果 View 模型中的属性发生更改,如何使用 xaml 和数据绑定(bind)更改按钮的背景颜色

c# - 是否可以使用 WiX 变量避免 MAX_PATH 限制?

c# - Entity Framework - 更新表中的一行

c# - LINQ 从集合 C# 返回 Dictionary<string, List<Item>>