2009-10-05 4 views
0

Compte tenu de cette expression LINQ:entrée Conserver avec l'expression LINQ à l'aide Sauf au lieu de cas

items.Select(i => i.ToLowerInvariant()).Except(keywords) 

Y at-il un moyen d'exprimer que lorsque vous conservez le boîtier de l'entrée, sans utiliser Où()?

L'approche Où:

items.Where(i => !keywords.Contains(i.ToLowerInvariant())) 

J'aime la façon dont l'approche Sauf lit, mais je ne veux pas la sortie modifiée.

Des idées?

Répondre

2

Vous pouvez utiliser le overload of Except that takes an IEqualityComparer<T>. Dans ce cas, vous n'avez pas besoin de rouler votre propre comparateur: la classe intégrée StringComparer.InvariantCultureIgnoreCase fait exactement ce dont vous avez besoin:

items.Except(keywords, StringComparer.InvariantCultureIgnoreCase); 
4

Il y a une surcharge Sauf() qui prend un IEqualityComparer - vous pouvez utiliser sur des chaînes intégrées comparateurs:

items.Except(keywords, StringComparer.InvariantCultureIgnoreCase); 
+1

Vous pouvez utiliser le StringComparer.InvariantCultureIgnoreCase intégré. –

+0

Bon point ... Je suis en train de mettre à jour mon exemple. – LBushkin

Questions connexes