2

这似乎应该很容易,但是,由于某种原因,我的大脑不合作。

我有一个简单的方法调用它:

return Json.Encode(
    Models
    .GroupBy(e => e.Gender)
    .Select(g => new {
        Gender = g.Key,
        Count = g.Count()
    }).ToArray()
);

这会产生以下 JSON:

[{"Gender":"Male","Count":2},{"Gender":"No Answer","Count":1}]

但是,我希望 JSON 对象看起来像这样:

[
    ['Male', 2],
    ['No Answer', 1]
]

我试过使用元组和字典无济于事。我敢肯定,一旦得到答案,我会踢自己。

4

2 回答 2

3

这应该这样做:

return Json.Encode(
    Models
    .GroupBy(e => e.Gender)
    .Select(g => new object[] { g.Key, g.Count() })
    .ToArray()
);

您需要一个数组数组,因此只需创建数组。

于 2013-06-11T19:02:41.033 回答
1

您可以为此使用匿名类型。这些提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而无需先显式定义类型。

因此,只需从您的选择表达式中跳过您的Gender和属性。Count

return Json.Encode(Models
                     .GroupBy(e => e.Gender)
                     .Select(g => new object[] { g.Key, g.Count()})
                     .ToArray());

请注意

  • 如果未在匿名类型中指定成员名称,编译器会为匿名类型成员提供与用于初始化它们的属性相同的名称。
  • 您必须为使用表达式初始化的属性提供名称(在您的情况下为Genderand Count
于 2013-06-11T19:06:15.007 回答