如何使用LINQ从这两个表中获取年初至今的新用户数?

时间:2014-02-16 20:26:26

标签: c# asp.net linq linq-to-entities

我是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的新用户数量?

1 个答案:

答案 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);

它可能有语法错误,但你明白了!