2017-08-28 3 views
1

Hell all!comment filtrer avec array/list via linq dynamique

J'ai essayé toutes les variations connues pour filtrer avec Contains, mais jusqu'ici aucune chance.

METHOD # 1

ret = ret.Where("CaseID.Contains(@0)", {15, 16, 17}) 

obtient l'erreur suivante:

System.Linq.Dynamic.ParseException: 'No applicable method 'Contains' exists in type 'Int32?''

METHOD # 2

ret.Where("@0.Contains(outerIt.CaseID)", {15, 16, 17}) 

Apportez l'erreur suivante:

System.Linq.Dynamic.ParseException: 'No 'it' is in scope'

Alors, comment puis-je filtrer par une liste ou un tableau?

J'utilise la dernière bibliothèque System.Linq.Dynamic dans NuGet 1.0.7

Répondre

1

ce qui suit fonctionnera, mais vous devez veiller à ce que les CaseID et les valeurs du tableau ont le même type.

ret.Where("@0.Any(outerIt.CaseID=it)", array)

+1

Cela me donne toujours l'erreur 'System.Linq.Dynamic.ParseException: « Non »il est en scope'' – JGOakley

0

Pas tout à fait sûr si je comprends bien votre question à droite. Mais voulez-vous dire quelque chose comme ça? Ceci est résolu avec une Lambda-Expression.

var listA = new[] {1, 2, 3, 5, 8}; 
var listB = new[] {1, 3, 5, 7, 11}; 
var res = listA.Where(itemA => listB.Contains(itemA)); 
// res = {1,3,5}