如何在linq中按列表项筛选元素

本文关键字:列表 筛选 元素 linq | 更新日期: 2023-09-27 18:28:13

我有一个用户属于一个具有特定角色的社区。user、community、CommunityRole和CommunityRoleType的类描述如下:

public class User{
    public int UserId { get; set;}  
    public List<CommunityRole> CommunityRoles { get; set; }
}
public class Community{
    public int CommunityId { get; set;}
    public string Name { get; set; }
}
public enum CommunityRoleType{
    Type1,
    Type2
}
public class CommunityRole { 
    public Community Community { get; set; }
    public CommunityRoleType RoleType {get; set; }
}

如何从用户列表中获取属于特定社区并被分配特定角色的用户子集??

如何在linq中按列表项筛选元素

编辑:

var usersType1 = users.Where(usr => usr.CommunityRoles.Any(role => 
                              role.RoleType == CommunityRoleType.Type1
                                   && role.Community.CommunityId == communityID)).ToList();

社区中具有CommunityRoleType Type1 的所有用户

如果你说"这个社区中的所有用户"(即你之前提到的社区):

var users = _context.Users
            .Where(u => u.CommunityRoles
                         .Any(cr => cr.RoleType == CommunityRoleType.Type1
                                 && cr.Community.CommunityId == someCommunityId ));