簡體   English   中英

LINQ加入/分組問題

[英]LINQ Join/Grouping issues

所以我又被卡住了...

我有三個表要與linq一起加入並分組。 公司,通知和要求。

  • 一個公司可能有很多通知。

  • 通知中包含SubcategoryId和CompanyId

  • 請求具有SubcategoryId。

我的目的是獲取公司列表,每個公司都獲得其關注子類別的列表,並且對於每個關注子類別,該子類別中的請求

例如: x公司正在監視子類別4和7。向他展示我們在這些子類別中有什么要求。

這就是我僅對一家公司執行的操作。 但是當我需要多個公司的列表時,我無法解決分組和加入的問題。

Company company = db.Companies.Where(x=>x.UserId == 10).FirstOrDefault();
            var requestByNotices =
            from notice in company.Notices
            join request in db.Requests.Where(z => z.IsApproved &
                 z.Status.Status == "Active") on notice.SubcategoryId equals
                 request.Subcategoryid

UPDATE

讓我改一下我的問題。

此查詢將生成一個表,其中包含我要查找的結果:

SELECT Companies.CompanyId, Companies.Name, Account.Email, Notices.SubcategoryId, Requests.FriendlyName FROM Companies
INNER JOIN Notices  ON Companies.CompanyId = Notices.CompanyId 
INNER JOIN Account  ON Account.UserId = Companies.Uid
INNER JOIN Requests ON Notices.SubcategoryId = Requests.Subcategoryid 
WHERE Requests.StartDate > '2013-12-22';  

但是除了生成平面列表,我想將其轉換為linq,還可以按CompanyId分組。 因此,每個公司僅由一行代表,並且在該公司內我可以收到請求。

因此,而不是像這樣的列表:

CompanyId   Name   Email            SubcategoryId     FriendlyName
1           Test   test@test.com    2                 x
1           Test   test@test.com    4                 y

我想要這樣的:

CompanyId   Name   Email            GroupOfRequests  
1           Test   test@test.com    contains two 

感謝您的幫助!

更新:如果我理解正確,你想要這樣的東西

var result =
        from company in db.Companies
        from notice in company.Notices
        join request in db.Requests.Where(z => z.IsApproved &&
             z.Status.Status == "Active") on notice.SubcategoryId equals request.Subcategoryid
        group new {notice, request } by company into gr           
        select new {gr.Key, Value = gr.ToList() }

UPDATE2
為您的SQL似乎是這樣的

from company in db.Companies
join notice in db.Notices on company.CompanyId equals notice.CompanyId
join account in db.Account on company.Uid equals account.UserId
join request in db.Requests on notice.SubcategoryId equals request.SubcategoryId

group new {notice, request} by new {company, account} into g
select new {g.Key, value = g}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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