2

次のようなオブジェクトのリストがあるとしましょう。

var users = new List<User>();
users.Add(new User() { FirstName = "Ek0nomik" });
users.Add(new User() { FirstName = "Ek0nomik" });
users.Add(new User() { FirstName = "Foobar" });

そのリストから、名前とその名前の数を含む2次元配列を取得しようとしています(Google Chartsで使用するJSONとして返すため)。これは、配列に含まれるものです。

["Ek0nomik", 2],
["Foobar", 1]

私は最初は.Select新しいオブジェクトを投影するために使用しようとしていましたが、それはリスト内の各オブジェクトに対して投影されるので、そのメソッドが私をそこに導くとは思いません。

4

3 に答える 3

6
users.GroupBy(x => x.FirstName)
     .Select(x => new { Name = x.Key, Count = x.Count() })
于 2012-04-11T21:31:04.503 に答える
1

これはどうですか?

var asd = users.GroupBy(x => x.FirstName).Select(x => new {Name = "['" + x.Key + "', "+ x.Count() + "]"});
foreach (var t in asd)
{
Console.WriteLine(t.Name);
}
于 2012-04-11T21:36:57.253 に答える
0
var groupedUsers = users.GroupBy(x => x.FirstName)
            .Select(x => new { Name = x.Key, Count = x.Count() });
var dictionary = groupedUsers.ToDictionary(u=>u.Name, u=>u.Count);


var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var output = serializer.Serialize(dictionary);

出力は次のようになります

{"Ek0nomik":2,"Foobar":1}

そして、JSONでグラフを描画します。

ページ メソッドまたは WebService を使用している場合、JavaScriptSerializer を含む行は必要ありません。その JSON を生成するための辞書のみが必要です。

于 2012-04-11T22:34:48.140 に答える