2012-07-23 2 views
0

속성 값에 대해 Collection (다른 Collection을 상속받은)에서 검색하고 싶습니다.LINQ -에 포함되어 있습니까?

private ObservableCollection<User> userCollection = someData; 

public class User 
{ 
    public string Username { get; set; } 
    public ObservableCollection<Department> Memberships { get; set; } 
} 

public class Department 
{ 
    public string Name { get; set; } 
} 

//I can't use "Contains", because it requires an object of type "Department", but I don't have the object, just the string "Name" (in this case "MyDepartment") 
var result = from usr in userCollection where (usr.Memberships.Contains("MyDepartment")) select usr; 

의견이 있으십니까?

답변

3

IEnumerable.Any을 사용하면 원하는 것을 얻을 수 있습니다. 예를 들어

:

(from usr in userCollection select usr). 
       Any(x=>x.Username.Contains("MyDepartment")) 
3

당신은 당신이 원하는 것을 실현하려 IEnumerable.Any()를 사용할 수 있습니다. 술어가 true을 리턴하는 콜렉션에 하나 이상의 요소가있는 경우, true을 리턴합니다.

var result = from usr in userCollection 
      where usr.Memberships.Any(m => m.Name == "MyDepartment") 
      select usr; 
2

코드 예제를 사용하여 - 당신은 당신이 - 실행에 포함 새 컬렉션에 대해 확인하는 부서의 상당 부분을 선택해야합니다.

var result = from usr in userCollection where (usr.Memberships.Select(m=>m.Name).Contains("MyDepartment")) select usr; 

는 또한 - 다른 답변

를 참조 - IEnumerable.Any는 더 Contains보다 여기에 구성입니다
관련 문제