[英]C# - LINQ select distinct from list which contain list
好的,這就是我所擁有的。
public class A
{
//Properties
List<B> listB;
//Methods
}
public class B
{
//Properties
public struct C
{
public byte D
{
get;
set;
}
//Other propeties
}
public List<C> listC;
//Methods
}
//..somewhere
A mydataA = new A();
mydataA.listB = new List<B>();
mydataA.listB.listC = new List<C>();
mydataA.listB.listC = JsonConvert.DeserializeObject<List<C>>(json);
//C.D will take values like 1, 2, 1, 2, 2, 3, 5, 2
我需要選擇不同的值D
從各C
,因此結果將是列表1, 2, 3, 5
。 現在,我正在選擇像這樣的不同數據:
List<byte> mylist = new List<byte>();
foreach(var each_of_B in A.listB)
{
foreach(var each_of_C in each_of_B.C)
{
mylist.Add(each_of_C.D);
}
}
var res = mylist.GroupBy(t => t).Select(g => g.First()).ToList();
但這並不是很酷,因為我必須創建新的List,創建一些循環。 有沒有辦法用一行選擇不同的數據,比如var res = mydataA.***.Select(g => g.First()).ToList();
,我需要哪里***
?
SelectMany
是您要找的東西:
var res = A.listB.SelectMany(b => b.C).Select(c => c.D).Distinct().ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.