簡體   English   中英

在 linq 查詢中分組后不能 select 屬性

[英]Can't select properties after group by in linq query

我有兩個表,Organization 和 ApplicationUser。 它們之間的關系是一對多。 這意味着一個組織可以有多個用戶。 現在我需要編寫一個查詢來顯示一些組織屬性以及每個組織的總用戶數。 我正在嘗試編寫查詢。 但是在 GroupBy function 之后,每當我嘗試獲取屬性時,什么都沒有。 這是查詢:

var lists = await (from org in _dbContext.Organizations.AsNoTracking()
                   join dept in _dbContext.Departments.AsNoTracking() on org.Id equals dept.OrganizationId into orgDeptTemp
                   from orgDept in orgDeptTemp.DefaultIfEmpty()
                   join user in _dbContext.ApplicationUsers.AsNoTracking() on org.Id equals user.OrganizationId into orgUserTemp
                   from orgUser in orgUserTemp.DefaultIfEmpty()
                   group org by org.Id into orgGroupTemp
                   select new OrganizationDto
                   {
                       OrganizationId = orgGroupTemp.Key,
                       OrganizationName = orgGroupTemp.Key.......,
                       TotalUsers = How to get the total user
                   })
                   .ToListAsync();

在 SQL 中,GROUP BY 之后唯一可用的列是組鍵和聚合列。 您需要將它們逐行添加到組中。 例如,按組織 ID 和名稱分組

假設您的 model 設置正確,請使用導航屬性

var query = from org in _dbContext.Organizations
            where org.Departments.Any(d => d.Whatever)
            select new OrganizationDto
            {
                OrganizationId = org.Id,
                OrganizationName = org.Name,
                TotalUsers = org.Users.Count(),
            };
var list = await query.AsNoTracking().ToListAsync();

暫無
暫無

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

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