如何从列表中的列表中检索不同值的列表

本文关键字:列表 检索 | 更新日期: 2023-09-27 18:29:47

我有一个对象列表,在每个对象中都包含一个id列表。

下面的代码创建了一个由10个成员组成的列表,然后在每个成员中创建一个由5个随机id组成的列表。

public class Member
{
    List<int> Ids { get; set; }
    public Member()
    {
        Ids = new List<int>();
    }
}
var rnd = new Random();
var container = new List<Member>();
// Add members with random Ids
for ( int i = 1; i <= 10; i++ ){
    var member = new Member();
    for ( int j = 1; j <= 5; j++ ){
        member.Ids.Add( rnd.Next(100) );
    }
}
var distinctIds = ?????; 

我正在努力的是LINQ为所有成员检索一个不同的Id列表

如何从列表中的列表中检索不同值的列表

var distinctIds = 
    (from member in container
    from id in member.Ids
    select id).Distinct();

当然还有method-y语法,在本例中使用SelectMany:

var distinctIds = container.SelectMany(member => member.Ids).Distinct();

但我永远记不清如何调用它,所以我通常更喜欢多个from s。