【问题标题】:Linq expression required for grouping分组所需的 Linq 表达式
【发布时间】:2012-06-27 16:12:59
【问题描述】:

我有一个“A”类列表,有两个属性 qty 和 groupId.e.g.

数量组 ID 8 1 2 2 2 3 1 4 3 5

我需要根据一个因子值对它进行分组。例如让因子值=4。基于这个因子值组看起来像:

数量组 ID 4 1 - 组 1 4 1 - 组 2 2 2 -| 2 3 -|组3 1 4 -| 3 5 -|第 4 组

我需要一个 linq 表达式。在此先感谢。

【问题讨论】:

  • 抱歉,我没看懂你想要的分组方式。您能否详细说明您希望如何分组?
  • @Raphael Althaus:我无法根据因子值进行分组。我没有在这里编写代码,因为它是下面 tobias 指定的简单分组。
  • @rajeshKumar 好的:问题是:您的组取决于结果排序。您的结果总是按 GroupId 排序,还是?
  • 您无法通过 GroupBy 获得更多行(第 1 行给出两个组),看起来您需要在分组之前执行上一步

标签: linq


【解决方案1】:

一般来说,linq 中的分组是通过调用 GroupBy() 方法和一个 lambda 表达式来完成的。

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.groupby.aspx

// your list
IList<ClassA> listToGroup = new List<ClassA>(){ ... your items ...};
// Factor
int factor = 4;
// group the list by Qty value of the ClassA-items
var resultOfGrouping = listToGroup.GroupBy(a => a.Qty * factor == 8);

第一个托比

【讨论】:

  • 感谢 Tobias。以上查询将根据数量返回分组。我需要根据因子值进行分组。例如,如果您看到上面的列表,那么您会发现第一项中有 8 个数量。意味着如果因子值为4,它可以分为两组,即为什么我将它分为具有相同组 id 的两组。在第 2 和第 3 位置,只有两个项目,使总数 4 等于因子值。所以组合它使第 3 组。分别在第 4 和第 5 位置的项目组合形成组4.我现在清楚了吗?这种类型的分组在 linq 中是否可行?
  • 对不起,我不明白你的分组算法。但通常您可以使用任何算法进行分组。我更新了我的答案。也许这有帮助。
  • 感谢您的快速回复。我留下了在 linq 中实现此逻辑的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
相关资源
最近更新 更多