2010-11-23 12 views
1

J'essaie d'interroger une liste à l'aide de LINQ.Requête LINQ pour interroger une liste avec des membres du groupe

L'instruction de requête contient des entrées qui doivent correspondre à des éléments d'un tableau. En d'autres termes, obtenez des entrées de SourceList qui correspondent à l'un des éléments du tableau d'éléments. Exemple:

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

Je pensais que la construction d'une chaîne de requête en boucle si le tableau d'éléments. Je voulais savoir s'il y avait un moyen efficace de le faire.

+0

désolé mon résultat d'erreur est IEnumerable pas Liste – fireBand

Répondre

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

Cela devrait le faire.

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

cela fonctionnera, mais si SourceList devient une liste vous devriez penser à mettre en œuvre votre propre comparateur. Cela vous donnera un moyen de personnaliser votre comparaison, par exemple X.Id == Y.Id. –

2

Qu'en est-:

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())) 
}