簡體   English   中英

如何在linq to sql中按導航屬性成員分組?

[英]How can I group by a navigation property member in linq to sql?

我抱着三個表Users Groups和他們的協會, UserGroups在布置這個小提琴:

我正在嘗試使用linq2sql在小提琴中的查詢中顯示用戶組中的最高級別。

但是,EntityFramework會混淆連接表TblUserGroup ,而只是為我提供導航屬性: TblGroups.UsersUser.TblGroups

到目前為止,這是我整理的內容,但是Linqpad告訴我它無法執行:

var maxGroup = from ua in ctx.TblGroups
               group ua by ua.TblUsers.Select(s=>s.UserId)
               into g
               select new
               {
                   UserId= g.Key,
                   MaxLevel = g.Max(s => s.GroupLevel)
               };

看來您可以這樣做:

var result = users.Select(u => new 
                               {
                                   UserId = u.Id, 
                                   MaxLevel = u.Groups.Max(g => g.GroupLevel) 
                               });

具有:

class User
{
    public int UserId { get; set; }

    public string UserName { get;set; }

    public List<Group> Groups { get; set; }
}

class Group
{
    public int GroupId { get; set; }

    public string GroupName { get; set; }

    public int GroupLevel { get; set; }

    public List<User> Users { get; set; }
}

對你起作用嗎?

var maxGroup = ctx.TblUsers
    .Where(u => u.TblUserGroups != null)
    .Select(u => new 
            {
                UserId = u.UserId, 
                MaxGroupLevel = u.TblUserGroups.TblGroups.Max(g => g.GroupLevel) 
            }
    );

暫無
暫無

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

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