Linq to SQL中SUM GROUP BY SQL语句的等效写法

4

我很难想象如何将这个简单的 SQL 语句翻译成 (c#) linq to SQL:

SELECT  table1.vat, SUM(table1.QTY * table2.FLG01 + table1.QTY * table2.FLG04) 
FROM table1
inner join table2 on table2.key= table1.key
where  '2010-02-01' <= table1.trndate   and  table1.trndate <= '2010-02-28'
Group by table1.vat

任何帮助都是受欢迎的

2个回答

7

我还在学习LINQ,但这似乎有效

var result = from t1 in table1
             from t2 in table2
             where t1.key == t2.key && DateTime.Parse("2010-02-01") <= t1.trndate && t1.trndate <= DateTime.Parse("2010-02-28")
             group new {t1,t2} by t1.vat into g
             select new { vat = g.Key, sum = g.Sum(p => p.t1.QTY*p.t2.FLG01 + p.t1.QTY*p.t2.FLG04)};

我希望LINQ to SQL也能良好地进行翻译,因为我只在对象上尝试过。


是的,它确实奏效了!我想我永远也不会习惯这种Yoda语言。再次非常感谢。 - Savvas Sopiadis

2
所以在Jonas的帮助下,上述查询变成了这样(使用内连接):
var result = from t1 in table1
             join t2 in table2 on t1.key equals t2.key
             where  DateTime.Parse("2010-02-01") <= t1.trndate && t1.trndate <= DateTime.Parse("2010-02-28")
             group new {t1,t2} by t1.vat into g
             select new { vat = g.Key, sum = g.Sum(p => p.t1.QTY*p.t2.FLG01 + p.t1.QTY*p.t2.FLG04)};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接