LINQ查询到Group,Sort和SumProduct

时间:2015-01-28 09:06:22

标签: .net vb.net linq

如何创建LINQ查询以实现以下目标:

  1. 名称属性
  2. 分组源数据项
  3. 将结果Groups Value 属性排序,最大的组位于顶部
  4. 将组项目选择到名为 MyNewClass 的新类中(如下图所示,位于右侧)
  5. 为每个SumProduct计算 x 成熟度Group,并将结果设置为 MaturitySumProduct 属性EM> MyNewClass
  6. 下面是来自LINQ查询的源数据和所需结果结构的示例。

    enter image description here

    我开始在LINQ查询中进行分组,但却被其他人忽略了:

    Dim query = From i In SourceDataItems
                Group By Name = i.Name
                Into MyNewClass = Group
    

    如何完成查询以获得所需的结果?

1 个答案:

答案 0 :(得分:2)

MyNewClass中设定适当的构造函数:

Dim query = From i In SourceDataItems
            Group By Name = i.Name Into NameGroup = Group
            Let SumArea = NameGroup.Sum(Function(i) i.Area)
            Let SumValue = NameGroup.Sum(Function(i) i.Value)
            Let SumMaturity = NameGroup.Sum(Function(i) i.Maturity)
            Let MaturitySumProduct =  NameGroup.Sum(Function(i) i.Value * i.Maturity)
            Order By SumValue Descending
            Select New MyNewClass(Name, SumArea, SumValue, MaturitySumProduct)