簡體   English   中英

C#-LINQ選擇不同於包含列表的列表

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM