2014-10-29 2 views
-2

Я пользователь, который принадлежит к общине с определенной ролью, Классы пользователя, сообщество, CommunityRole и CommunityRoleType описаны ниже:Как фильтровать элементы по элементу списка в linq?

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; } 
} 

Как получить из списка пользователей, подмножество пользователей, принадлежащих к определенному сообществу, и которым назначена определенная роль?

+1

Что у вас есть ou попытался сделать это, и какие конкретные проблемы у вас есть с вашими попытками решения? – Servy

+1

Можем ли мы увидеть ваш класс 'UserCommunityRole'? –

+0

«Assumming есть сообщество классов» ... Почему бы вам просто не поместить код в класс сообщества? –

ответ

1

EDIT:

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

'CommunityRoles' - это' List 'не' List '. –

+0

Я предположил, что вы совершили ошибку там .... – noobed

+0

проголосовать без конструктивного комментария действительно продуктивно :) – noobed

0

всех пользователей в сообществе, которые имеют CommunityRoleType Type1

Если бы ты сказал "все пользователи в это сообщества" (т.е. сообщества вы упомянули непосредственно перед этим):

var users = _context.Users 
      .Where(u => u.CommunityRoles 
         .Any(cr => cr.RoleType == CommunityRoleType.Type1 
           && cr.Community.CommunityId == someCommunityId)); 
Смежные вопросы