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