こんにちは、linq to sql の初心者です。基本については知っています。問題は、クエリで左結合を実行したいことです。クエリには 3 つのテーブルがあります。
- 請求者 (すべての行がこのテーブルから返される必要があります)
- 請求
- ユーザー
クエリは、要求者を持つすべてのユーザーを返す必要があります。これは、多対多テーブル クレームによって行われます。ただし、ユーザーに関係なく、すべての申立人を返還する必要があります。したがって、Clairant の左結合。
次のクエリがあります
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
});
これらの結合を左右に正しく使用し、どのように機能するかを説明する方法について、誰かが私を正しい方向に向けることができれば幸いです。事前にどうもありがとうございました。