我有一个List<Fields>
集合,其中类Fields具有以下属性
(Name, Currency, Amount, Date, OtherList)
其中OtherList是List
示例值
Name Currency Amount Date F1 F2 F3
ABC XX 12 12 Jan 2013 X Y Z
BCA YY 11 12 Jan 2013 A B C
ABC XX 10 13 Jan 2013 X Y Z
现在,OtherList对象的(X, Y, Z)
值为record1
,(A, B, C)
et.el
record2
我需要做的是在名称,货币,F1,F2和F3字段上对上面的列表应用聚合,以便结果如下。
输出
Name Currency Amount Date F1 F2 F3
ABC XX 22 13 Jan 2013 X Y Z
BCA YY 11 12 Jan 2013 A B C
知道我该怎么做吗?
感谢。
答案 0 :(得分:2)
您可以使用LINQ:
var aggrList = list
.GroupBy(x => new { x.Name, x.Currency, x.F1, x.F2, x.F3 })
.Select(grp => new {
Name = grp.First().Name,
Currency = grp.First().Currency,
Amount = grp.Sum(x=>x.Amount),
Date = grp.Max(x=>x.Date),
F1 = grp.First().F1,
F2 = grp.First().F2,
F3 = grp.First().F3,
});
答案 1 :(得分:0)
尝试以这种方式分组:
list.Where(x => x.OtherList != null && x.OtherList.Count >= 3 )
.GroupBy(x => new {F1 = x.OtherList[0], F2 = x.OtherList[1], F3 = x.OtherList[2]})
.Select(g => new
{
Name = g.First().Name,
Currency = g.First().Currency,
Amount = g.Sum(x => x.Amount),
Date = g.Max(x => x.Date),
F1 = g.Key.F1,
F2 = g.Key.F2,
F3 = g.Key.F3,
});
我想对于Date
,您将应用Max()
函数,金额 - Sum()
,但您计划如何为Name
和Currency
字段应用汇总?