如何将SQL Join查询转换为LINQ?

时间:2014-09-25 15:41:01

标签: linq join

我需要将此代码转换为linq查询。

下面的查询让我在MS SQL中更正了总数。

SELECT SUM(t1.itemPrice + t2.itemPrice) as TOTAL FROM table1 t1, table2 t2 WHERE r.userID = u.userID

我试图让这个相同的代码在linq查询中工作,所以我可以在我的项目MVC4中使用它。

我的尝试失败主要是b / c我还不熟悉Linq。这是:

- Linq--

var query = (from t1 in db.table1 
             join table2 in db.table2 
             on t1.userID equals t2.userID
             select new { SUM (t2.itemPrice + t1.itemPrice) });

显然以上都行不通。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

你非常接近。 Sum()必须使用非Linq语法:

var query = (from t1 in db.table1 
             join table2 in db.table2 
             on t1.userID equals t2.userID
             select t2.itemPrice + t1.itemPrice).Sum();

如果可能,sum操作仍将转换为SQL,因为您将调用IQueryable.Sum()

答案 1 :(得分:0)

另一个看似简单的解决方案是:

var query = table1.Join(table2, x=>x.userID, y=>y.userID, (x,y) => (x.itemPrice + y.itemPrice)).Sum();