您的位置:首页 > 其它

Lamda表达式分组计算

2016-08-14 11:35 295 查看
 根据不同的term 计算每项的权重 即, weight/sum(weight)

         
Result r = new Result();
r.altid="001";
r.term=21;
r.weight = 0.1;
list.Add(r);
Result r2 = new Result();
r2.altid = "002";
r2.term = 21;
r2.weight = 0.2;
list.Add(r2);
Result r3 = new Result();
r3.altid = "003";
r3.term = 63;
r3.weight = 0.2;
list.Add(r3);

var ListTerm = list.GroupBy(t => t.term).Select(g => (new { term = g.Key, SumWgt = g.Sum(s => s.weight) }));//按照term计算总的weight

var listGroup = list.Join(ListTerm, a => a.term, l => l.term, (a, l) => new { altid = a.altid, term = l.term, wgt = a.weight,wi=a.weight/l.SumWgt }).ToList();//term内连接项,wi=weight除以各自的sum(weight)
foreach (var l in listGroup)
{
Console.WriteLine(l.term + ": "+ l.wi);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: