鉴于此LINQ表达式:
items.Select( i => i.ToLowerInvariant() ).Except( keywords )
有没有办法表明保留输入框的地方,而不使用Where()?
Where方法:
items.Where( i => !keywords.Contains( i.ToLowerInvariant() ) )
我喜欢Except方法读取的方式,但我不想要改变输出。
有什么想法吗?
答案 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);