代表不区分大小写的.contains?

时间:2014-09-10 09:22:10

标签: c# linq

如果我有一个数组并且我正在使用LINQ来检查数组元素是否包含一个字符串使用.All()有没有办法做这个不区分大小写?

我的代码是:

string s1 = "hello my name is blah";
string[] split2 = fund.Split(' ');
if (split2.All((s1.Contains)))
    {
        //Do something
    }

如果我做了一个简单的.Contains(字符串),我可以使用this question中的解决方案。我认为答案大致相同,但我不确定如何在使用委托时实现原始解决方案。

5 个答案:

答案 0 :(得分:4)

split2.All(s1.Contains)

实际上是

的简写
split2.All(str => s1.Contains(str))

知道这一点,现在应该可以轻松应用所需的额外参数。

答案 1 :(得分:2)

您可以简单地使用lambda表达式:

if (
     split2.All
     (str => s1.IndexOf(str, StringComparison.CurrentCultureIgnoreCase) != -1)
   )

答案 2 :(得分:0)

您可以创建包含Contains

的委托
Func<string, bool> insensitiveContains = s => s1.Contains(s, StringComparer.CurrentCultureIgnoreCase);

你可以使用insensitiveContains作为All()的参数:

if (split2.All(insensitiveContains))

答案 3 :(得分:0)

您可以使用接受StringComparison的{​​{3}}的重载:

bool containsAll = split2
    .All(s2 => s1.IndexOf(s2, StringComparison.CurrentCultureIgnoreCase)>= 0);

答案 4 :(得分:-1)

Spender是对的,但很短:

split2.All(str => s1.ToUpper().Contains(str.ToUpper()))

是你需要的。