我有一个对象列表,每个对象中都包含一个id列表。
下面的代码会创建一个包含10个成员的列表,然后在每个成员中创建一个包含五个随机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列表。
答案 0 :(得分:1)
var distinctIds =
(from member in container
from id in member.Ids
select id).Distinct();
当然有方法-y语法,在这种情况下会使用SelectMany
:
var distinctIds = container.SelectMany(member => member.Ids).Distinct();
但我永远不会记得如何调用它,所以我通常更喜欢多个from
。