使用 Linq 创建交叉表结果[重复]

2024-01-02

可能的重复:
是否可以使用 LINQ 透视数据? https://stackoverflow.com/questions/167304/is-it-possible-to-pivot-data-using-linq

我想知道是否可以使用 Linq 创建交叉表样式结果。 我有一些数据如下所示:

    var list = new[]
    {
        new {GroupId = 1, Country = "UK", Value = 10},
        new {GroupId = 1, Country = "FR", Value = 12},
        new {GroupId = 1, Country = "US", Value = 18},
        new {GroupId = 2, Country = "UK", Value = 54},
        new {GroupId = 2, Country = "FR", Value = 55},
        new {GroupId = 2, Country = "UK", Value = 56}
    };

我正在尝试输出到中继器控件,如下所示:

GroupId.....UK.....FR.....US
1...........10.....12.....18
2...........54.....55.....56

这是导致我的问题的动态列。有什么解决办法吗?


您需要一个运行类来保存这些运行结果。 xml 怎么样?

XElement result = new XElement("result",
  list.GroupBy(i => i.GroupId)
  .Select(g =>
    new XElement("Group", new XAttribute("GroupID", g.Key),
      g.Select(i => new XAttribute(i.Country, i.Value))
    )
  )
);

您是否期望每个结果单元格有多个记录?如果是这样,则需要进行一些求和(以及更多分组)。

(这个答案是概念证明,而不是最终结果。有几个问题需要解决,例如:列的排序、丢失的单元格等等)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Linq 创建交叉表结果[重复] 的相关文章