簡體   English   中英

如何在WHERE中執行LINQ JOIN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM