0

我有一个要求。喜欢....

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 查询按上述方式执行总和和百分比

4

2 回答 2

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

于 2013-05-14T10:19:10.493 回答
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("-----------------");
}
于 2013-05-14T10:28:34.907 回答