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