检查2个数组中是否存在字符串的最简单方法是什么?p/s是否有LINQ方法来替换它?
// Old school method
bool result = false;
var stringArray1 = new string[] { "ABC", "EFG", "HIJ" };
var stringArray2 = new string[] {"123", "456", "ABC"};
for (var i = 0; i < stringArray1.Count; i++) {
var value1 = stringArray1[i];
for (var j = 0; j < stringArray2.Count; j++) {
var value2 = stringArray2[j];
if(value1 == value2)
result = true;
}
}
Run Code Online (Sandbox Code Playgroud)
对于区分大小写的搜索,您可以执行此操作
var result = stringArray1.Any(x => stringArray2.Contains(x));
Run Code Online (Sandbox Code Playgroud)
正如所回答的Intersect那样,这项工作也很顺利.
虽然你想要一个更强大的文化不敏感的版本
你可以用
var culture = new CultureInfo("en-US");
var result = stringArray1.Any(x =>
stringArray2.Any(y =>
culture.CompareInfo.IndexOf(x, y, CompareOptions.IgnoreCase) >= 0));
Run Code Online (Sandbox Code Playgroud)
描述文本所用语言culture的实例在哪里CultureInfo
您可以将两个数组相交,然后检查结果中是否有任何项:
var stringArray1 = new string[] { "ABC", "EFG", "HIJ" };
var stringArray2 = new string[] { "123", "456", "ABC" };
var result = stringArray1.Intersect(stringArray2).Any();
Run Code Online (Sandbox Code Playgroud)
如果您关心区分大小写,则可以传递a StringComparer作为第二个参数Intersect.例如:
var result = stringArray1.Intersect(stringArray2, StringComparer.OrdinalIgnoreCase).Any();
Run Code Online (Sandbox Code Playgroud)