我有這樣的表的數目:LINQ表達式具有多個與條件聯接在每個加入
- User_cs
- UserEducation_cs
- 經驗
我需要的是用戶信息
- 他們從User_cs獲取的基本信息
- 他們上一次接受的教育(即:他們獲得的最新學歷)
- Experience_cs中他們當前正在工作的位置(如果用戶不在工作的話)將爲NULL。
我到目前爲止能夠做到以下,但我遇到了麻煩1)我如何在lamda表達式中做(IsWorking == true)並且跟隨那個連接到下一個表。以下是我的表達
List<Models.UserInfo> v = context.User_cs
.Join(context.UserEducation_cs, u => u.UserName, ue => ue.UserName, (u, ue) => new UserEducation_cs
{
UserName = ue.UserName,
EducationId = ue.EducationId,
StartDate = ue.StartDate,
EndDate = ue.EndDate
}).
Join(context.Education_cs, ue => ue.EducationId, e => e.EducationId, (ue, e) => new
{
UserName = ue.UserName,
EducationId = ue.EducationId,
StartDate = ue.StartDate,
EndDate = ue.EndDate,
Title = e.Title,
Major = e.Major,
MajorDetails = e.MajorDetails,
Info = e.Info
}).
Join(context.Experiences, lst => lst.UserName, ex => ex.UserName, (lst, ex) => new Models.UserInfo
{
UserName = ex.UserName,
EducationId = lst.EducationId,
StartDate = lst.StartDate,
EndDate = lst.EndDate,
Title = lst.Title,
Major = lst.Major,
MajorDetails = lst.MajorDetails,
Info = lst.Info,
IsWorking = ex.IsWorking,
StartDate_ex=ex.StartedDate,
}).
Where(iw => iw.IsWorking == true).ToList();
任何幫助將不勝感激
您的當前表達式的錯誤是什麼? – slawekwin
它只是在做現在的連接,但我想要的是有條件,我需要檢查1)IsWorking in Experience_cs,應該是true 2)在Education_cs中,只有最後一個行應該包含在連接中 – Alex
我認爲你必須使用'.GroupJoin()'。在這種情況下,右側不是單個元素,而是所有匹配元素的IEnumerable。然後,您可以對該序列應用更多條件或過濾器,以獲取所需的所需元素(例如,一個,多個或無)。 – Oliver