急求LINQ表达式

lgx1972 2009-07-05 08:19:45
有如下数据表:

姓名 部门 工资 奖金
-----------------------------
张三 业务部 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 语句如何写?
...全文
72 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgx1972 2009-07-22
  • 打赏
  • 举报
回复
感谢各位大侠 VB2008 的代码也已经试验成功,特此登出供大家学习:


Dim staffs = From p In db.Staff _
Group By p.姓名,p.部门 Into g = Group _
Select 姓名,部门,工资=g.Sum(Function(p) p.工资),奖金=g.Sum(Function(p) p.奖金)

Richard345265669 2009-07-20
  • 打赏
  • 举报
回复
这个没有必要用Linq吧,一个Group by就OK了
good2speed 2009-07-19
  • 打赏
  • 举报
回复

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)
});
good2speed 2009-07-19
  • 打赏
  • 举报
回复
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)
};
shinlgienls 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oec2003 的回复:]
表结构
Staff (ID,Name ,Departments,Wage,Award) 依次为主键ID,姓名,部门,工资,奖金

linq写法
C# code
var staffs= from pin db.Staff
group p bynew {Name=p.Name,Departments=p.Departments} into g
selectnew
{
Name=g.Key.Name,
Departments=g.Key.Departments,
TotalWage=g.Sum(p=>p.Wage),
TotalAward=g.Sum(p=>p.Award)
};
[/Quote]1
oec2003 2009-07-05
  • 打赏
  • 举报
回复
表结构
Staff (ID,Name ,Departments,Wage,Award) 依次为主键ID,姓名,部门,工资,奖金

linq写法

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

lgx1972 2009-07-05
  • 打赏
  • 举报
回复
帮忙写个详细点的代码吧,试了多次,不行
十八道胡同 2009-07-05
  • 打赏
  • 举报
回复
sum
group by
wuyq11 2009-07-05
  • 打赏
  • 举报
回复
通过group分组再求和
参考
lgx1972 2009-07-05
  • 打赏
  • 举报
回复
有VB.NET的代码吗?

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧