如何使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));