如何使用linq执行网格中列中所有单元格的总和

时间:2013-05-14 09:39:20

标签: c# linq

我有一个要求。 像....

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查询建议我如何使用上述方式执行总和和百分比

2 个答案:

答案 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)

您可以按学生姓名对参赛作品列表进行分组。 然后遍历每个组以显示:

  • 个人入境属于学生
  • LINQ的Sum()和Average()
  • 的汇总结果

像这样:

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("-----------------");
}