[英]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.