c# 和 LINQ - 将 IGrouping 转换为列表
c# and LINQ - convert IGrouping to List
我编写了以下代码来查找对象列表中的常见对象
https://dotnetfiddle.net/gCgNBf
.......................
var query = setOfPersons
.SelectMany(l => l.Select(l1 => l1))
.GroupBy(p => p.Id)
.Where(g => g.Count() == setOfPersons.Count);
之后,我需要将 "query" 转换为 "Person" 对象列表 ( List ) 以实现其他目的。
我试过使用"ToList()"...但是它说:
" cannot convert IGrouping to a List ".
有人可以帮我解决吗?
查看您的代码,您似乎想要实现的是获取每个列表中存在的人员列表。如果是这样,您可以使用以下查询:
var query = setOfPersons
.SelectMany(l => l.Select(l1 => l1))
.GroupBy(p => p.Id)
.Where(g => g.Count() == setOfPersons.Count)
.Select(x=>x.First()) // Select first person from the grouping - they all are identical
.ToList();
Console.WriteLine("These people appears in all set:");
foreach (var a in query)
{
Console.WriteLine("Id: {0} Name: {1}", a.Id, a.Name);
}
在这里,您 select 只是每个分组中的一个项目,因为它们都是相同的。
我编写了以下代码来查找对象列表中的常见对象
https://dotnetfiddle.net/gCgNBf
.......................
var query = setOfPersons
.SelectMany(l => l.Select(l1 => l1))
.GroupBy(p => p.Id)
.Where(g => g.Count() == setOfPersons.Count);
之后,我需要将 "query" 转换为 "Person" 对象列表 ( List ) 以实现其他目的。
我试过使用"ToList()"...但是它说:
" cannot convert IGrouping to a List ".
有人可以帮我解决吗?
查看您的代码,您似乎想要实现的是获取每个列表中存在的人员列表。如果是这样,您可以使用以下查询:
var query = setOfPersons
.SelectMany(l => l.Select(l1 => l1))
.GroupBy(p => p.Id)
.Where(g => g.Count() == setOfPersons.Count)
.Select(x=>x.First()) // Select first person from the grouping - they all are identical
.ToList();
Console.WriteLine("These people appears in all set:");
foreach (var a in query)
{
Console.WriteLine("Id: {0} Name: {1}", a.Id, a.Name);
}
在这里,您 select 只是每个分组中的一个项目,因为它们都是相同的。