讓所有孩子的記錄,我有兩個型號:LINQ - 所有父母
class Foo
{
public List<Bar> Bars { get; set; }
}
class Bar
{
public int Value { get; set; }
}
具有List<Foo>
一個例子,我怎樣才能得到使用LINQ查詢所有Value
?
謝謝大家
讓所有孩子的記錄,我有兩個型號:LINQ - 所有父母
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>
,然後Select
項目是Bar
對象之間的Value
財產的順序,返回IEnumerable<int>
。
作爲查詢表達式,這將是:
var values = from foo in myList
from bar in foo.Bar
select bar.Value;
我建議你改變List<Bar>
屬性名稱設置爲Bars
。並且首先使用SelectMany()
。它將序列的每個元素投影到一個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();