我有两个字符串数组,一个包含文件名,如file1.docx,file2.docx,file3.docx,另一个数组来自UI控件,必须像第一个一样但添加了日期。我需要验证第一个数组的所有项都存在于第二个数组中(是第二个数组项字符串的一部分)。
foreach (UITestControl t in children)
{
Boolean found = false;
var div = t as HtmlDiv;
if (div == null) continue;
String actualText = div.InnerText;
foreach (string t1 in searchResultNames)
{
if (!found)
{
if (actualText.IndexOf(t1, StringComparison.InvariantCultureIgnoreCase) >= 0)
{
found = true;
result.AssertTrue(found, t1 + "found in search result");
}
}
}
我使用indexOf方法但是这个代码可能会以某种方式改进吗?
我们的代码中使用的算法结果永远不会失败:)因为如果找到至少一个项目它总是返回true :)然后它只是通过foreach循环找到值设置为true并且一切都很好:)所以我需要更改此代码
答案 0 :(得分:0)
bool allExist = !firstArray.Except(secondArray).Any()
修改强>
bool allExist = !firstArray.Except(secondArray, new MyComparer()).Any()
public class MyComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return x.StartsWith(y);
}
public int GetHashCode(string obj)
{
return obj[0].GetHashCode();
}
}