急求LINQ表达式.
有如下数据表:
姓名 部门 工资 奖金
-----------------------------
张三 业务部 2200 300
李四 资源部 3100 200
王五 工 会 2800 100
赵六 财务部 3300 500
张三 业务部 1000 100
马七 工程部 3300 300
王五 工 会 1200 300
------------------------------
想要合并后的结果如下:
姓名 部门 工资 奖金
-----------------------------
张三 业务部 3200 400
李四 资源部 3100 200
王五 工 会 4000 400
赵六 财务部 3300 500
马七 工程部 3300 300
------------------------------
即:把姓名和部门相同某人的工资奖金求和
该功能用 LINQ 语句如何写?
[解决办法]
表结构
Staff (ID,Name ,Departments,Wage,Award) 依次为主键ID,姓名,部门,工资,奖金
linq写法
- C# code
var staffs = from p in db.Staff group p by new {Name=p.Name,Departments=p.Departments} into g select new { Name=g.Key.Name, Departments=g.Key.Departments, TotalWage=g.Sum(p=>p.Wage), TotalAward=g.Sum(p=>p.Award) };
[解决办法]
[解决办法]
- C# code
var array = new Foo[]{
new Foo(){ Name="张三",Deprt="业务部", Salary=2200, Bonus=300},
new Foo(){ Name="李四",Deprt="资源部", Salary=3100, Bonus=200},
new Foo(){ Name="王五",Deprt="工 会", Salary=2800, Bonus=100},
new Foo(){ Name="赵六",Deprt="财务部", Salary=3300, Bonus=500},
new Foo(){ Name="张三",Deprt="业务部", Salary=1000, Bonus=100},
new Foo(){ Name="马七",Deprt="工程部", Salary=3300, Bonus=300},
new Foo(){ Name="王五",Deprt="工 会", Salary=1200, Bonus=300}
};
var table = from item in array
group new { Salary = item.Salary, Bonus = item.Bonus }
by new { Name = item.Name, Deprt = item.Deprt } into grouping
select new
{
Name = grouping.Key.Name,
Depart = grouping.Key.Deprt,
Salary = grouping.Sum(x=>x.Salary),
Bonus = grouping.Sum(x=>x.Bonus)
};[解决办法]
或
- C# code
var table = array .GroupBy(item => new { Name = item.Name, Deprt = item.Deprt }) .Select(grouping => new { Name = grouping.Key.Name, Depart = grouping.Key.Deprt, Salary = grouping.Sum(x => x.Salary), Bonus = grouping.Sum(x => x.Bonus) });