我有一个要求。 像....
Sname Marks Percentage
aa 50 50
aa 60 60
bb 80 80
bb 60 60
这里我想添加标记和显示百分比,如下所示
Sname Marks Percentage
aa 50 50
aa 60 60
-----------------
aa 110 55
----------------
bb 80 80
bb 60 60
-----------------
bb 140 70
-----------------
应该使用linq查询来完成我正在使用以下linq查询执行分组显示。
List<Studentsmarkslist> mrksbrpby = (from n in lstmrks
group n by new { n.StudentName,n.Total,n.Percentage }
into g orderby g.Key.StudentName
select new Studentsmarkslist
{
StudentName = g.Key.StudentName,
Total = g.Key.Total,
Percentage = g.Key.Percentage
}).ToList();
return mrksbrpby
请使用此linq查询建议我如何使用上述方式执行总和和百分比
答案 0 :(得分:0)
您希望使用.Sum()方法汇总所有Marks值,使用.Average()获取平均百分比。
使用示例可以通过以下MSDN链接找到:
.Sum()在这里阅读更多内容: http://msdn.microsoft.com/en-us/library/bb338442.aspx
.Average()在这里阅读更多内容: http://msdn.microsoft.com/en-us/library/bb338413.aspx
答案 1 :(得分:0)
您可以按学生姓名对参赛作品列表进行分组。 然后遍历每个组以显示:
像这样:
var groups = from n in lstmrks
group n by n.StudentName;
foreach (var g in groups)
{
foreach (var s in g)
Console.WriteLine("{0}\t{1}\t{2}", s.StudentName, s.Total, s.Percentage);
Console.WriteLine("-----------------");
Console.WriteLine("{0}\t{1}\t{2}", g.Key, g.Sum(x => x.Total), g.Average(x => x.Percentage));
Console.WriteLine("-----------------");
}