我有三张桌子,上面放着Users Groups和他们的协会,UserGroups就像这小提琴一样:
我正试图获得用户组中的最大级别,如使用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)
};发布于 2015-07-17 06:38:02
看来你可以这样做:
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; }
}发布于 2015-07-17 06:42:31
对你有用吗?
var maxGroup = ctx.TblUsers
.Where(u => u.TblUserGroups != null)
.Select(u => new
{
UserId = u.UserId,
MaxGroupLevel = u.TblUserGroups.TblGroups.Max(g => g.GroupLevel)
}
);https://stackoverflow.com/questions/31469631
复制相似问题