2010-11-23 1 views
1

LINQ를 사용하여 목록을 쿼리하려고합니다.배열 구성원이있는 목록을 쿼리하는 LINQ 쿼리

쿼리 문은 배열의 항목과 일치해야하는 항목을 포함합니다.

즉, 항목 배열의 항목 중 하나와 일치하는 항목을 SourceList에서 가져옵니다. 예 :

private List<string> GetSearchResult(List<string> SourceList, 
    string name, string[] items) 
{ 
    IEnumerable<string> QueryList = SourceList.Where 
     (entry => enrty.name == name && entry.id == <any item from items>) 
} 

나는 항목 배열 불구하고 반복 쿼리 문자열을 구축 생각했다. 효율적인 방법이 있는지 알고 싶었습니다.

+0

죄송합니다. 결과는 IEnumerable이 아닙니다. 목록 – fireBand

답변

1
private List<string> GetSearchResult(List<string> SourceList,string name, string[] items) 
{ 
    return SourceList.Where(entry => entry.name == name && items.Contains(entry.id)).ToList(); 
} 

.

4
private List<string> GetSearchResult(List<string> SourceList, 
    string name, string[] items) 
{ 
    return SourceList.Where(entry => entry.name == name 
     && items.Contains(entry.id)) 
} 
+0

이 작동하지만, SourceList가 List이되면 자신의 비교자를 구현해야합니다. 이렇게하면 비교를 사용자 정의 할 수 있습니다 (예 : X.Id == Y.Id. –

2

무엇에 대해 :

private List<string> GetSearchResult(List<string> SourceList,string name, string[] items) 
{ 
    List<string> QueryList = SourceList.Where 
        (entry => enrty.name == name && items.Any(m => m == entry.id.ToString())) 
} 
을해야