我有三个表格,Users
Groups
及其关联UserGroups
,如this小提琴所示:
我试图获得用户中的最高级别'使用linq2sql在小提琴中的查询中显示的组。
但是,EntityFramework会对联接表TblUserGroup
进行模糊处理,而只是为我提供导航属性:TblGroups.Users
或User.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)
};
答案 0 :(得分:1)
似乎你可以这样做:
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; }
}
答案 1 :(得分:0)
它对你有用吗?
var maxGroup = ctx.TblUsers
.Where(u => u.TblUserGroups != null)
.Select(u => new
{
UserId = u.UserId,
MaxGroupLevel = u.TblUserGroups.TblGroups.Max(g => g.GroupLevel)
}
);