分组到一个数组中

本文关键字:一个 数组 | 更新日期: 2023-09-27 18:17:59

这看起来应该是相当容易的,但是,由于某种原因,我的大脑不合作。

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

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]
]

我试过使用元组和字典,但无济于事。我敢肯定,一旦这个问题得到答案,我会后悔的。

分组到一个数组中

应该这样做:

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

你想要一个数组的数组,所以简单地创建数组

您可以使用匿名类型。它们提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而不必先显式地定义类型。

所以,从你的Select Expression中跳过你的GenderCount属性。

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

注意

  • 如果你没有在匿名类型中指定成员名,编译器会给匿名类型成员提供与初始化它们所用属性相同的名称。
  • 您必须为正在用表达式初始化的属性提供一个名称(在您的例子中是GenderCount)