对 Group、Sort 和 SumProduct 的 LINQ 查询
LINQ query to Group, Sort and SumProduct
如何创建 LINQ
查询以实现以下目的:
- 按 名称 属性
对源数据项进行分组
- 按 值 属性 对结果
Groups
进行排序,最大的一组在顶部
- Select 将项目分组到一个名为 MyNewClass 的新 class 中(如下图右侧所示)
- 计算每个
Group
的 Value x Maturity 的 SumProduct
,并将结果设置为 MaturitySumProduct 属性 在 MyNewClass.
下面是来自 LINQ
查询的源数据和所需结果结构的示例。
我从在 LINQ 查询中分组开始,但遇到了其余问题:
Dim query = From i In SourceDataItems
Group By Name = i.Name
Into MyNewClass = Group
如何完成查询以获得想要的结果?
假定 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)
如何创建 LINQ
查询以实现以下目的:
- 按 名称 属性 对源数据项进行分组
- 按 值 属性 对结果
Groups
进行排序,最大的一组在顶部 - Select 将项目分组到一个名为 MyNewClass 的新 class 中(如下图右侧所示)
- 计算每个
Group
的 Value x Maturity 的SumProduct
,并将结果设置为 MaturitySumProduct 属性 在 MyNewClass.
下面是来自 LINQ
查询的源数据和所需结果结构的示例。
我从在 LINQ 查询中分组开始,但遇到了其余问题:
Dim query = From i In SourceDataItems
Group By Name = i.Name
Into MyNewClass = Group
如何完成查询以获得想要的结果?
假定 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)