[英]How to perform LINQ JOIN with WHERE
我需要使用LINQ和WHERE子句執行JOIN的幫助。 問題是當事件中的CaseId為null(並非所有事件都與大小寫相關)時,它會導致不顯示事件。
這是我的代碼:
var queryEvents = (from e in db.events
join u in db.users on e.UserID equals u.UserID
join c in db.cases on e.CaseID equals c.CaseID
where e.UserID == Program.loggedUser.UserID || (e.UserGroupID == Program.loggedUser.UserGroupID && c.AccessLvl>0)
select new { User = u.FirstName + " " + u.LastName, e.Name, e.Description, e.StartDate }).OrderByDescending(x => x.StartDate);
gvAppointments.DataSource = queryEvents.ToList();
我找到了一些有關如何使用INTO來使用LINQ LEFT JOIN的示例,但是我對WHERE語句有疑問。老實說,我不知道將它放在哪里。
有人可以幫我嗎?
var queryEvents = (from e in db.events
join u in db.users on e.UserID equals u.UserID
join c in db.cases on e.CaseID equals c.CaseID into cases
from subC in cases.DefaultIfEmpty()
where e.UserID == Program.loggedUser.UserID || (e.UserGroupID == Program.loggedUser.UserGroupID && subC?.AccessLvl ?? 0 > 0)
select new { User = u.FirstName + " " + u.LastName, e.Name, e.Description, e.StartDate }).OrderByDescending(x => x.StartDate);
gvAppointments.DataSource = queryEvents.ToList();
您只需要知道,subC現在可能為空,因此您必須使用默認值,並訪問其屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.