繁体   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