我是LINQ的新用户,我正在尝试提出一个LINQ语句,该语句将检索具有默认角色的新用户数。详细说明,我有以下两个表:
Users Table: UserID, Name
Roles Table: ID, RoleName, DateCreated, UserID
由于用户可能有多个角色,因此我需要检索只有一个角色ID的新用户的年初至今。如果用户有多个角色,则不应计算他。
我能够提出以下问题:
var newUsers= from user in context.Users
where user.Roles.Where(role => role.UserID == user.UserID).Count() == 1
但是当我添加以下条件时,我没有得到正确的结果:
where(role => role.DateCreated.Year == year && role.DateCreated.Month <= month)
您能否告诉我如何获得只有一个角色ID的新用户数量?
答案 0 :(得分:0)
这就是你如何让这个用户只有一个角色:
var query = context.Users.Where(a => (a.Roles.DateCreated.HasValue ? (a.Roles.DateCreated.Value.Year == DateTime.Now.Year && a.Roles.DateCreated.Value.Month <= DateTime.Now.Month) : false))
.GroupBy(c => new { c.Roles, c.UserID })
.Where(c => c.Count() == 1)
.Select(c => c.Key.UserID);
它可能有语法错误,但你明白了!