2012-07-31 94 views
1

我想这个SQL查询LINQ转换,但未能如愿.. 任何帮助表示赞赏...L2S:转换SQL查询到LINQ

SELECT [t0].id, 
    sum([t1].[total_Statements]) AS [value], 
    sum([t1].[totalpage] - [t1].[total_Statements]) AS [value2], 
    sum([t1].[total_bad]) AS [value3], 
    [t0].[biller_id] 
    FROM [dbo].[upload_t] AS [t0] 
    left JOIN [dbo].[printer] AS [t1] ON 
    ((CONVERT(NVarChar,[t0].[id])) = [t1].bill]) 
    where (([t0].[biller_id] = 10) 
    group by [t0].[biller_id],[t0].id,[t0].[date] 
    ORDER BY [t0].[date] DESC 
+2

[你有什么尝试](http://whathaveyoutried.com/)? – 2012-07-31 12:01:08

+1

你失败了? – leppie 2012-07-31 12:02:41

+0

Darek得到了解决方案..感谢 – 2012-07-31 12:15:11

回答

1
var query = 
ctx.upload_t.Where(w1=>w1.biller_id==10) 
.join(ctx.printer, t0=>t0.id.ToString(), t1=>t1.bill.ToString(), 
(t0,t1) => new {t0.id, t0.biller_id, t1.total_statements, t1.total_page, t1.total_bad,t0.date}) 
.GroupBy(g1=>new {t0.biller_id,t0.id,t0.date) 
.Select(s1=>new{ 
    s1.Key.id, 
    value=s1.Sum(s2=>s2.total_statements), 
    value2=s1.Sum(s2=>s2.total_page-s2.total_statements), 
    value3=s1.Sum(s2=>s2.total_bad), 
    s1.Key.biller_id, s1.Key.date}) 
.OrderBy(o1=>o1.date) 

如果你可以住在额外的日期列......如果没有,做后续选择。

+0

感谢您快速回答Darek .. – 2012-07-31 12:15:28

1

你可以下载一个试用版Linqer。这将帮助你将SQL查询转换为Linq查询,并且在这个过程中你可以学习Linq。

+0

这不是一个解决方案。它是另一种选择。应该是一个评论。 – 2012-07-31 12:10:07

+0

是的。这就是为什么我说你的答案应该是一个评论。 – 2012-07-31 12:18:25