0

Persons のリストがあるとします。List には次のオブジェクトがあります。

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 によって新しい人物を 1 回だけ持つことができます。繰り返される場合は、State 値を取得し、それを新しい Person オブジェクトにコンマで区切って入れます。たとえば、新しいリストは次のようになります

Person = { ID= 1, State="CA,NY,OH"}
Person = { ID= 2, State="PA,KC"}
Person = { ID= 3, State="FL"}

これを達成する方法はありますか?

4

2 に答える 2

1

とを使用Enumerable.GroupByString.Joinます。

var result = persons.GroupBy(p => p.ID)
                    .Select(g => new Person{
                        ID = g.Key,
                        State = string.Join(",", g.Select(p => p.State))
                    }).ToList();
于 2012-09-19T19:37:07.653 に答える
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();
于 2012-09-19T19:39:08.683 に答える