Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq获取组中除第一项之外的所有项的总和?_C#_Linq - Fatal编程技术网

C# 使用Linq获取组中除第一项之外的所有项的总和?

C# 使用Linq获取组中除第一项之外的所有项的总和?,c#,linq,C#,Linq,我想得到除每组第一名学生之外的所有学生的未付费用的总和 预期产出 1770 == (400 + 350 + 100 + 20 + 900) 我尝试的 int result = StudentsList .Select(x => x.FeesUnpaid) .FirstOrDefault() .Sum(); 我有编译时错误: 编译错误:“int”不包含“Sum”和的定义 重载的最佳扩展方法 “System.Linq.Queryable.Sum(System.Linq.IQue

我想得到除每组第一名学生之外的所有学生的
未付费用的总和

预期产出

1770 == (400 + 350 + 100 + 20 + 900)
我尝试的

int result = StudentsList
  .Select(x => x.FeesUnpaid)
  .FirstOrDefault()
  .Sum();
我有编译时错误:

编译错误:“int”不包含“Sum”和的定义 重载的最佳扩展方法 “System.Linq.Queryable.Sum(System.Linq.IQueryable)”有一些 无效参数

我的代码-

public class StudentInfo
{
  public string Student { get; set; }
  public string University { get; set; }
  public int GroupID { get; set; }
  public int FeesUnpaid {get; set;}
}

List<StudentInfo> StudentsList = new List<StudentInfo>();

// Group 1
StudentsList.Add( new StudentInfo { Student="John", University="ABC", GroupID = 1, FeesUnpaid= 200});
StudentsList.Add( new StudentInfo { Student="Jack", University="DEF", GroupID = 1, FeesUnpaid= 400} );
StudentsList.Add( new StudentInfo { Student="Peter", University="GHI", GroupID = 1, FeesUnpaid= 0} );

// Group 2
StudentsList.Add( new StudentInfo { Student="Donald", University="JKL", GroupID = 2, FeesUnpaid= 0} );
StudentsList.Add( new StudentInfo { Student="Olivia", University="ABC", GroupID = 2, FeesUnpaid= 350} );

// Group 3
StudentsList.Add( new StudentInfo { Student="Emity", University="OPQ", GroupID = 3, FeesUnpaid= 40} );
StudentsList.Add( new StudentInfo { Student="Emma", University="GHI", GroupID = 3, FeesUnpaid= 100} );

// Group 4
StudentsList.Add( new StudentInfo { Student="Alan", University="DEF", GroupID = 4, FeesUnpaid= 50} );
StudentsList.Add( new StudentInfo { Student="Alan", University="DEF", GroupID = 4, FeesUnpaid= 20} );

// Group 5
StudentsList.Add( new StudentInfo { Student="Adam", University="GHI", GroupID = 5, FeesUnpaid= 400} );
StudentsList.Add( new StudentInfo { Student="Matthew", University="OPQ", GroupID = 5, FeesUnpaid= 900} );
公共班级学生信息
{
公共字符串Student{get;set;}
公共字符串{get;set;}
public int GroupID{get;set;}
公共整数{get;set;}
}
List StudentsList=新列表();
//第一组
添加(新的StudentInfo{Student=“John”,University=“ABC”,GroupID=1,FeesUnpaid=200});
添加(新的StudentInfo{Student=“Jack”,University=“DEF”,GroupID=1,FeesUnpaid=400});
添加(新的StudentInfo{Student=“Peter”,University=“GHI”,GroupID=1,FeesUnpaid=0});
//第2组
添加(新的StudentInfo{Student=“Donald”,University=“JKL”,GroupID=2,FeesUnpaid=0});
添加(新的StudentInfo{Student=“Olivia”,University=“ABC”,GroupID=2,FeesUnpaid=350});
//第3组
添加(新的StudentInfo{Student=“Emity”,University=“OPQ”,GroupID=3,FeesUnpaid=40});
添加(新的StudentInfo{Student=“Emma”,University=“GHI”,GroupID=3,FeesUnpaid=100});
//第4组
添加(新的StudentInfo{Student=“Alan”,University=“DEF”,GroupID=4,FeesUnpaid=50});
添加(新的StudentInfo{Student=“Alan”,University=“DEF”,GroupID=4,FeesUnpaid=20});
//第5组
添加(新的StudentInfo{Student=“Adam”,University=“GHI”,GroupID=5,FeesUnpaid=400});
添加(新的StudentInfo{Student=“Matthew”,University=“OPQ”,GroupID=5,FeesUnpaid=900});
学生列表。选择((x=>x.FeesUnpaid))。FirstOrDefault()
将返回第一个
FeesUnpaid
值,即200,因此您不能
求和()

int result = StudentsList
    .GroupBy(s => s.GroupID) // Create groups
    .Select(grp => grp.Skip(1).Sum(s => s.FeesUnpaid)) // Get total fees unpaid, except the firs in each group
    .Sum(); // Get a total sum
StudentsList.Select((x=>x.FeesUnpaid)).FirstOrDefault()
将返回第一个
FeesUnpaid
值,即200,因此您不能
Sum()

int result = StudentsList
    .GroupBy(s => s.GroupID) // Create groups
    .Select(grp => grp.Skip(1).Sum(s => s.FeesUnpaid)) // Get total fees unpaid, except the firs in each group
    .Sum(); // Get a total sum

好的,您可以在每个组内
GroupBy
然后
跳过(1)

List<StudentInfo> StudentsList = ...

...

var result = Students
  .GroupBy(student => student.GroupID)  // Combine students into Groups
  .SelectMany(group => group.Skip(1))   // Skip 1st student in each group and flatten groups
  .Sum(student => student.FeesUnpaid);  // finally, sum FeesUnpaid
列出学生列表=。。。
...
var结果=学生
.GroupBy(student=>student.GroupID)//将学生合并到组中
.SelectMany(group=>group.Skip(1))//跳过每组中的第一个学生并展平组
.Sum(学生=>student.FeesUnpaid);//最后,我要付一笔钱

好的,你可以
GroupBy
然后
跳过(1)
每组:

List<StudentInfo> StudentsList = ...

...

var result = Students
  .GroupBy(student => student.GroupID)  // Combine students into Groups
  .SelectMany(group => group.Skip(1))   // Skip 1st student in each group and flatten groups
  .Sum(student => student.FeesUnpaid);  // finally, sum FeesUnpaid
列出学生列表=。。。
...
var结果=学生
.GroupBy(student=>student.GroupID)//将学生合并到组中
.SelectMany(group=>group.Skip(1))//跳过每组中的第一个学生并展平组
.Sum(学生=>student.FeesUnpaid);//最后,我要付一笔钱
这个怎么样

int result = StudentsList.GroupBy(s => s.GroupID).Select(g => g.Skip(1).Sum(x => x.FeesUnpaid)).Sum();
这个怎么样

int result = StudentsList.GroupBy(s => s.GroupID).Select(g => g.Skip(1).Sum(x => x.FeesUnpaid)).Sum();