C# 分组成数组

C# 分组成数组,c#,javascript,json,encoding,C#,Javascript,Json,Encoding,这看起来应该很容易,但是,出于某种原因,我的大脑不合作 我有一个简单的方法调用: return Json.Encode( Models .GroupBy(e => e.Gender) .Select(g => new { Gender = g.Key, Count = g.Count() }).ToArray() ); 这将生成以下JSON: [{"Gender":"Male","Count":2},{"Gender"

这看起来应该很容易,但是,出于某种原因,我的大脑不合作

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

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()
);
您需要一个数组,因此只需创建数组即可。

这应该可以做到:

return Json.Encode(
    Models
    .GroupBy(e => e.Gender)
    .Select(g => new object[] { g.Key, g.Count() })
    .ToArray()
);
您需要一个数组,因此只需创建数组即可。

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

因此,只需从Select表达式中跳过
Gender
Count
属性即可

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

  • 如果未在匿名类型中指定成员名称,编译器将为匿名类型成员提供与用于初始化它们的属性相同的名称
  • 必须为正在使用表达式初始化的属性提供名称(在您的情况下为
    Gender
    Count
    • 您可以使用它。它们提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而无需先显式定义类型

      因此,只需从Select表达式中跳过
      Gender
      Count
      属性即可

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

      • 如果未在匿名类型中指定成员名称,编译器将为匿名类型成员提供与用于初始化它们的属性相同的名称
      • 必须为正在使用表达式初始化的属性提供名称(在您的情况下为
        Gender
        Count

      您希望它看起来实际上不是JSON,它是一个数组。@MarcMarta是完全有效的JSON…您希望它看起来实际上不是JSON,它是一个数组。@MarcMarta是完全有效的JSON…Argh。我尝试了类似的方法,但语法不正确。这个很好用,谢谢!啊。我尝试了类似的方法,但语法不正确。这个很好用,谢谢!