根据不同的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);
}
转载请注明原文地址: https://ju.6miu.com/read-1296987.html