【发布时间】:2024-05-03 16:50:02
【问题描述】:
嗨,我对 linq to sql 有点陌生,我了解基本知识。问题是我想在查询中进行左连接。查询中有 3 个表。
- 索赔人(应从该表返回所有行)
- 索赔
- 用户
查询应返回所有拥有索赔人的用户。这是通过多对多表声明完成的。但无论用户如何,都应退回所有索赔人。因此,Claimants 上的左连接。
我有以下问题
var d = (from Claimants in DB.Claimants
join Claims in DB.Claims on Claimants.Claiment_ID equals Claims.Claiment_ID
join Users in DB.Users on Claims.User_ID equals Users.User_ID
where (Claimants.TrialDate.Value >= dtDayStart & Claimants.TrialDate <= dtDayEnd)
select new
{
ClaimantFirstName = Claimants.FirstName,
ClaimantLasname = Claimants.LastName,
ClaimantsID = Claimants.IDNumber,
Claimants.OurReference,
Claimants.TrialDate,
InterviewStart = Claims.DateTimeStart,
InterviewEnd = Claims.DateTimeEnd,
Claims.Priority,
UserFirstname = Users.FirstName,
UserLastName = Users.LastName,
UserID = Users.IDNumber
});
我尝试过如下使用 into 语句,但没有成功
var d = (from Claimants in DB.Claimants
join Claims in DB.Claims on Claimants.Claiment_ID equals Claims.Claiment_ID
into TheClaimants
from Claims in TheClaimants.DefaultIfEmpty()
join Users in DB.Users on Claims.User_ID equals Users.User_ID
where (Claimants.TrialDate.Value >= dtDayStart & Claimants.TrialDate <= dtDayEnd)
select new
{
ClaimantFirstName = Claimants.FirstName,
ClaimantLasname = Claimants.LastName,
ClaimantsID = Claimants.IDNumber,
Claimants.OurReference,
Claimants.TrialDate,
InterviewStart = Claims.DateTimeStart,
InterviewEnd = Claims.DateTimeEnd,
Claims.Priority,
UserFirstname = Users.FirstName,
UserLastName = Users.LastName,
UserID = Users.IDNumber
});
如果有人能指出如何正确使用这些左右连接并解释其工作原理,我将不胜感激。非常感谢您。
【问题讨论】:
-
Claimant是否有导航属性Claim?而Claim有一个导航属性Users?
标签: c# linq linq-to-sql many-to-many