0

データベースにデータを次のように保存しています

ID DateID Country NoOfPeople

2 20130301 インドネシア 2

3 20130301 マレーシア 128

4 20130301 イギリス 2

6 20130302 オーストラリア 1

24 20130303 オーストラリア 2

25 20130303 ブータン 11

26 20130303 カナダ 1

27 20130303 フィジー 1

28 20130303 フィンランド 1

52 20130304 オーストラリア 2

53 20130304 ブータン 10

54 20130304 カナダ 1

55 20130304 フィジー 1

このデータを、DateID がキーで、値が国と noOfPeople のプロパティを持つ国オブジェクトのリストであるディクショナリに転置したいと考えています。

すなわちDictionary<int, List<Country>>

LINQ を使用してアプリケーションにデータを返し、結果を走査して、一意の日付 ID ごとに国と番号のリストを作成します。これは機能しますが、よりエレガントで効率的なソリューションを探しています。

私の最終的な目標は、JSON を次の形式で出力することです。

PeopleByCountry":{

"20130301":

[

{"country":"Indonesia"," noOfPeople ":2},
{"country":"Malaysia"," noOfPeople ":128},
{"country":"United Kingdom"," noOfPeople ":2}
],

"20130302":
[
{"country":"Indonesia","noOfPeople":1},
{"country":"Australia"," noOfPeople ":1}
]
}

私は NewtonSoft でやっています。

これが理にかなっていることを願っています。

前もって感謝します。

4

1 に答える 1

0

たとえばIEnumerable<Row>、データの各行にプロパティを持つrowsクラスがある場合は、Linq クエリを使用して目的の構造を作成できます。Row

rows.ToLookup(r => r.DateID).ToDictionary(g => g.Key, g => g.ToList());

次に、標準の JSON シリアライザーを使用すると、目的の形式が得られます。詳しくはILookup<TKey, TElement> こちらをご覧ください。

于 2013-05-23T04:20:57.327 に答える