繁体   English   中英

LINQ - 获取所有父母的所有儿童记录

[英]LINQ - Getting all child records from all parents

我有两个型号:

class Foo
{
    public List<Bar> Bars { get; set; }    
}

class Bar
{
    public int Value { get; set; }    
}

拥有List<Foo>的实例,如何使用LINQ查询获取所有Value

谢谢你们

SelectMany通常是扁平化层次结构的方式,因此:

var values = myList.SelectMany(foo => foo.Bar)
                   .Select(bar => bar.Value);

SelectMany将为您提供IEnumerable<Bar> ,然后将Bar对象序列的Select项目添加到每个的Value属性,返回IEnumerable<int>

作为查询表达式,这将是:

var values = from foo in myList
             from bar in foo.Bar
             select bar.Value;

我建议你将List<Bar>属性名称更改为Bars

首先使用SelectMany() 它将序列的每个元素IEnumerable<T>IEnumerable<T> ,并将生成的序列展平为一个序列。 然后使用Select()根据需要投影新序列的每个元素。

var result = myList.SelectMany(x => x.Bars).Select(x => x.Value).ToList();

使用SelectMany而不是Select

var result = LIST1.SelectMany(x => x.LIST2.Select(y => y.Value)).Tolist();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM