我有Employee
个对象的列表。员工类看起来像这样:
class Employee
{
int empId,
String empName,
double score,
String department
}
我有一个这样的字典对象:
Dictionary<int, List<Employee>> = new Dictionary<int, List<Employee>>();
这本词典有四个键(1,2,3,4)。具有id的员工可能存在于所有四个列表中,并且可能不存在。我想要一份员工的汇总列表,其中得分是员工所有分数的总和。
示例:如果ID = 1的员工在四个列表中得分为10分,20分,30分和40分,那么结果列表应该有一个得分为100的员工的条目。我该怎么办?< / p>
答案 0 :(得分:2)
使用LinQ:
var yourdict = new Dictionary<int, List<Employee>>();
var yourId = 17;
var score = yourDict.Values
.SelectMany(x => x)
.Where(emp => emp.empId == yourId)
.Select(x => x.score)
.Sum();
或为所有人分组:
var employeeIdsAndScores = yourDict.Values
.SelectMany(x => x)
.GroupBy(emp => emp.Id)
.Select(g => new { EmployeeId = g.Key, Score = g.Select(x => x.score).Sum() } );
foreach(var emp in employeeIdsAndScores)
{
Console.WriteLine("Employee Id={0} scored {1} points in total", emp.EmployeeId, emp.Score);
}