2014-11-23 57 views
0

我有我的实体Framwork身份两类:如何创建一个LINQ语句来计算连接表的数量?

public partial class AspNetRole 
{   
public AspNetRole() 
    { 
     this.AspNetUsers = new List<AspNetUser>(); 
    } 

    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<AspNetUser> AspNetUsers { get; set; } 
} 

public partial class AspNetUser 
{ 
    public AspNetUser() 
    { 
     this.AspNetRoles = new List<AspNetRole>(); 
    } 
    public int Id { get; set; } 
    public string UserName { get; set; } 
    public virtual ICollection<AspNetRole> AspNetRoles { get; set; } 

} 

我就是用这个LINQ查询来获取角色ID和角色ID有 用户:

var user1 = await db.AspNetRoles 
      .Include(u => u.AspNetUsers) 
      .Select(u => new RoleGetDTO 
      { 
       RoleId = u.Id, 
       Name = u.Name, 
       Users = u.AspNetUsers.Select(y => new RoleGetDTO.User 
       { 
        UserId = y.Id, 
        Name = y.UserName 
       }).ToList() 
      }) 
      .ToListAsync(); 

有人可以帮助我。现在,我不想展示我想要 的用户集合,而是获取角色中的用户数。

这里是我的RoleDTO现在:

public class RoleGetDTO 
    { 
     public int RoleId { get; set; } 
     public string Name { get; set; } 
     public virtual ICollection<User> Users { get; set; } 

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

我想将它更改为:

public class RoleGetDTO 
    { 
     public int RoleId { get; set; } 
     public string Name { get; set; } 
     public int UserCount { get; set; } 
    } 

我希望我的问题是有道理的,希望有人能告诉我我该怎么改变LINQ等等现在它为每个RoleId填充UserCount整数。

回答

1

只要打电话给Count方法代替:

var user1 = await db.AspNetRoles 
      .Include(u => u.AspNetUsers) 
      .Select(u => new RoleGetDTO 
      { 
       RoleId = u.Id, 
       Name = u.Name, 
       UserCount = u.AspNetUsers.Count() 
      }) 
      .ToListAsync(); 
1

试试这个:

var user1 = await db.AspNetRoles 
     .Include(u => u.AspNetUsers) 
     .Select(u => new RoleGetDTO 
     { 
      RoleId = u.Id, 
      Name = u.Name, 
      UsersCount = u.AspNetUsers.Count() 
     }) 
     .ToListAsync(); 
相关问题