如何使IEnumerable <string> .Contains不区分大小写?

假设我有一个.net数组的string。

string[] strings = new string[] { "AbC", "123", "Xyz", "321" }; 

如果我想看看string数组是否包含“ABC”,我可以写

 strings.Contains("ABC"); 

但是,假设我想要一个函数,如果string的大写值包含“ABC”,将返回true。 我可以大写整个数组,但它看起来像.Contains方法有一些重载指定比较,但我很困惑的语法。

如何使用IEnumerable<string>.Contains()方法实现这个逻辑?

使用接受相等比较器的重载的Enumerable.Contains方法:

 strings.Contains("ABC", StringComparer.InvariantCultureIgnoreCase) 

还有在你可以使用的框中的string比较器 。

我个人喜欢这个人的LambdaComparer ,这对于像这样的东西非常有用:

使用IEqualityComparer和Lambdaexpression式对您的集合进行LINQ

用法示例:

 var comparer = new LambdaComparer<string>( (lhs, rhs) => lhs.Equals(rhs, StringComparison.InvariantCultureIgnoreCase)); var seq = new[]{"a","b","c","d","e"}; Debug.Assert(seq.Contains("A", comparer));