【问题标题】:Jarray GroupBy using multiple columnsJarray GroupBy 使用多列
【发布时间】:2022-07-19 14:37:48
【问题描述】:

我遇到了目前在 C# 中遇到的问题。 我在 Jarray 内的 Jobject 中有大约 31 列数据 (JArray tableJson = new JArray();)

我想将它们分成三列。 到目前为止,我只能按其中一列分组 例如:

var tableJsonGroup = tableJson.GroupBy(x => x["FirstColumn"]).ToList(); 

我想做这样的事情(它不起作用):

var tableJsonGroup = tableJson.GroupBy(x => new {x["FirstColumn"], x["SecondColumn"], x["FifthColumn"]}).ToList(); 

我该怎么做?

谢谢。

【问题讨论】:

  • JSON 数组不是表,也没有列。您实际上指的是 JSON 对象属性。
  • “我想做这样的事情(它不起作用)” 如何它不起作用?您是否收到编译器错误或运行时错误或只是意外结果?
  • “我想把它们分成三列” - 我想你的意思是你想group by三个属性,而不是“分组”三列。

标签: c# json linq


【解决方案1】:

正如我们所见,GroupBy 扩展的这种重载采用了一个委托,该委托用于枚举 tableJson 并为每个项目生成一个密钥。

生成相同密钥的项目将组合在一起并以IGrouping 的形式返回。没有基于源类型的特殊处理。这并没有什么不同,无论您有一个 ints 数组还是一个复杂对象数组。

因此,如果您想按列组合进行分组,您需要提供一个函数,该函数为该列组合返回唯一的、可重复的键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2016-03-10
    • 2021-06-01
    相关资源
    最近更新 更多