在EF中的多个列上连接多个表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在EF中的多个列上连接多个表相关的知识,希望对你有一定的参考价值。
尝试在EF上的多个列上连接多个表时遇到问题。
这是我的SQL查询
SELECT
Address,
AddressName,
COUNT(AddressCode) AS NumberOfAddress
FROM
Tbl1
INNER JOIN Tbl2
ON Tbl1.AddressID = Tbl2.AddressID2
INNER JOIN Tbl3
ON (Tbl1.AddressID = Tbl3.AddressID
AND Tbl2.NewId = Tbl3.NewId)
WHERE
Tbl2.StartDate >= '2001-01-01'
GROUP BY
Tbl2.AddressID2,
Tbl3.AddressID
这是我在EF中的查询(仅适用于加入部分):
var query = from Tbl1 DbContext.Tbl1
join Tbl2 in DbContext.Tbl2
on Tbl1.AddressID equals Tbl2.AddressID2
join Tbl3 in DbContext.Tbl3
on new {Tbl1.AddressID, Tbl2.NewId} equals new {Tbl3.AddressID,Tbl3.NewId}
但它只是不起作用,也没有我在StackOverflow上找到的一些变种。
我怎样才能使它工作?
答案
你可以用它。
在您的代码的第一行in
关键字丢失。我修好了它并添加了where
和group by
部件。
var query = from Tbl1 in Tbl1s
join Tbl2 in Tbl2s
on Tbl1.AddressID equals Tbl2.AddressID2
join Tbl3 in Tbl3s
on new {Tbl1.AddressID, Tbl2.NewId} equals new {Tbl3.AddressID,Tbl3.NewId}
where Tbl2.StartDate >= new DateTime(2001,1,1)
group new {Tbl1, Tbl2} by new {Tbl2.AddressID2, Tbl3.AddressID} into g
select new {
g.Key.AddressID2,
g.Key.AddressID,
NumberOfAddress = g.Count() }
以上是关于在EF中的多个列上连接多个表的主要内容,如果未能解决你的问题,请参考以下文章