如果我有一个数组并且我正在使用LINQ来检查数组元素是否包含一个字符串使用.All()有没有办法做这个不区分大小写?
我的代码是:
string s1 = "hello my name is blah";
string[] split2 = fund.Split(' ');
if (split2.All((s1.Contains)))
{
//Do something
}
如果我做了一个简单的.Contains(字符串),我可以使用this question中的解决方案。我认为答案大致相同,但我不确定如何在使用委托时实现原始解决方案。
答案 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()))
是你需要的。