Linq to SQL:选择多列的Sum

时间:2013-10-19 15:16:16

标签: c# .net linq linq-to-sql

我想将以下SQL代码转换为linq到sql但似乎无法找到方法

select holder_name,agent_code,sum(total) 
from agent_commission
group by agent_code

任何人都可以帮助我吗?我有点坚持这一点。

提前致谢

更新: 我尝试了以下

var query = (from p in context.Agent_Commissions
               group p by new
               {
                     p.agent_code
               }
               into s
               select new
               {
                    amount = s.Sum(q => q.total),
                }
              );

如何选择其他两列?我错过了什么?

2 个答案:

答案 0 :(得分:3)

事实上,当SQL queryholder_name之间的对应关系为agent_code时,1-1 仅适用于,否则为Group by agent_code不行。所以你的linq query应该是这样的:

var query =  from p in context.Agent_Commissions
             group p by p.agent_code into s
             select new {
                holder_name = s.FirstOrDefault().holder_name,
                agent_code = s.Key,
                amount = s.Sum(q => q.total)
             };

答案 1 :(得分:0)

这是你的linq查询

from a in ctx.agent_code 
group a by a.holder_name, a.code into totals 
select { holder_name = a.holder_name, 
         code = a.code, 
         total = totals.Sum(t=>t.total)} 

鉴于你在ctx变量中有linq2sql上下文并且它中包含你的表。