2

假设我有一个这样的对象列表:

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

我正在尝试从该列表中获取一个二维数组,其中包含该名称的名称和该名称的计数(为了将其作为 JSON 返回并在 Google Charts 中使用)。这是数组将包含的内容:

["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 回答