Jarray GroupBy使用多列

  • 本文关键字:GroupBy Jarray c# json linq
  • 更新时间 :
  • 英文 :


我有这个问题,我目前被困在c#。我在Jarray (Jarray tableJson = new Jarray ();) Jobject内大约有31列数据

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

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

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

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

我该怎么做?

谢谢。

正如我们所看到的,GroupBy扩展的这个重载接受一个委托,该委托用于枚举tableJson并为每个项生成一个键。

生成相同密钥的项将被分组在一起并作为igrougroup返回。没有基于源类型的特殊处理。无论您使用的是int数组还是复杂对象数组,这都没有什么不同。

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

这可以简单地通过将这些列组合成一个匿名类型来实现,该类型具有适合我们目的的内建的相等和哈希实现,就像这个答案一样。

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

你的答案几乎是正确的,但是,你没有为你的匿名类型的属性提供名称。然而,由于你没有解释什么"不起作用",所以很难确定。

最新更新