假设我有一个人员列表,在列表中我有以下对象:
Person = { ID= 1, State="CA"}
Person = { ID= 2, State="PA"}
Person = { ID= 1, State="NY"}
Person = { ID= 1, State="OH"}
Person = { ID= 3, State="FL"}
Person = { ID= 2, State="KC"}
如何获取新列表我只能通过ID获取新人员一次,如果重复获取State值并将其放入以逗号分隔的新Person对象中。例如,新列表将是
Person = { ID= 1, State="CA,NY,OH"}
Person = { ID= 2, State="PA,KC"}
Person = { ID= 3, State="FL"}
有没有办法实现这个目标?
答案 0 :(得分:1)
使用Enumerable.GroupBy
和String.Join
:
var result = persons.GroupBy(p => p.ID)
.Select(g => new Person{
ID = g.Key,
State = string.Join(",", g.Select(p => p.State))
}).ToList();
答案 1 :(得分:0)
这是扩展方法版本
var persons = Person.GroupBy(p => p.ID).Select(p => new Person() { ID = p.Key, State = String.Join(",", p.Select(p2 => p2.State).ToArray()) }).ToList();