使用Except而不是Where保留使用LINQ表达式的输入

时间:2009-10-05 14:04:24

标签: .net linq c#-3.0

鉴于此LINQ表达式:

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

有没有办法表明保留输入框的地方,而不使用Where()?

Where方法:

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

我喜欢Except方法读取的方式,但我不想要改变输出。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

Except()有一个重载,它带有一个IEqualityComparer - 你可以使用内置的字符串比较器:

items.Except( keywords, StringComparer.InvariantCultureIgnoreCase );

答案 1 :(得分:2)

您可以使用overload of Except that takes an IEqualityComparer<T>。在这种情况下,您不需要使用自己的比较器:内置的StringComparer.InvariantCultureIgnoreCase类完全符合您的需要:

items.Except(keywords, StringComparer.InvariantCultureIgnoreCase);