以下代码可用于使用 LINQ 在数组/字符串列表中进行搜索。
String[] someArray
= { "Test1", "test2", "test3", "TEST4" };
string toCheck = "Test1";
if (someArray.Any(toCheck.Contains))
{
// found -> Do sth.
}
// or with list
List<string> someList
= new List<string>(new string[] { "TEST1", "test2", "test3", "TEST4" });
if (someList.Any(toCheck.Contains))
{
// "Test1" != "TEST1"
}
但是你怎么能做到这种情况不变呢?
我的方法是将完整列表转换为上层,然后使用包含进行测试:
if ((someList.ConvertAll(item => item.ToUpper()).Any(toCheck.ToUpper().Contains)))
{
// found -> Do sth.
}
在这种情况下,原始列表不会改变。
if ((someList.Select(item => item.ToUpper()).Any(toCheck.ToUpper().Contains)))
{
// works with both
}
嗯,它有效......(还有一些特定于语言的东西,比如土耳其语“i”字母......(据我所知,我们仍然没有土耳其客户......但谁知道他们是否在未来?)),但它似乎不是很优雅。
如果项目在列表中,有没有办法进行大小写不变的比较?
最好的问候, Offler