我有我的模型的集合Person
:
class Person
{
public string FirstName {get; set;}
public string LastName {get; set;}
public string Company {get; set;}
public IEnumerable<string> Tags {get; set;}
}
并通过 LINQ 将这个集合转换为另一个按标签分组的集合。我怎样才能做到这一点?
到目前为止我的方法:
var result = PersonCollection
.SelectMany(m => m.Tags)
.GroupBy(b => b);
但这会丢弃有关此人的所有信息。
您可以将 Person 保留为匿名类型:
var result = PersonCollection
.SelectMany(p => p.Tags.Select(t => new{ Person = p, Tag = t }))
.GroupBy(x => x.Tag);
现在这些组仍然包含标签作为键和人员:
foreach (var tagPersons in result)
{
Console.WriteLine($"Tag: {tagPersons.Key}");
Console.Write($" all persons: {string.Join(",", tagPersons.Select(x => x.Person.LastName))}");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)