我是Linq
的新手。我想查询MS SQL
中的一些数据。
下面是我的声明:
select * from booking
left outer join carpark
on booking.bookingId = carpark.bookingId
where userID = 5 and status = 'CL'
当我在MS SQL
中运行此操作时,我得到了预期的结果。如何在Linq
中做到这一点?
谢谢你的帮助。
你需要这个:
var query = (from t1 in tb1
join t2 in tb2 on t1.pKey = t2.tb1pKey into JoinedList
from t2 in JoinedList.DefaultIfEmpty()
where t1.userID == 5 && t1.status == "CL"
select new
{
t1,
t2
})
.ToList();
您可以尝试这样做左连接:
from t1 in tb1
from t2 in tb2.Where(o => o.tb1pKey == t1.pKey).DefaultIfEmpty()
where tb1.userId == 5 && tb1.status == "CL"
select t1;
通常当人们说他们想要一个"左外连接"时,那只是因为他们已经在头脑中把他们真正想要的转换成SQL了。通常他们真正想要的是A表中的所有项目,以及从B表中获取相关项目(如果有的话)的能力。
假设您已经正确设置了导航属性,这可能很简单,如:
var tb1sWithTb2s = context.tb1
.Include(t => t.tb2s) // Include all the tb2 items for each of these.
.Where(t => t.userID == 5 and t.status = "CL");