自动化-使用C#硒 我们正在读取一个表,该表返回 是否可以比较两者 与 到现在为止,我一直在使用下面的代码,并且工作正常。但是,有没有其他方式来比较两个集合?有什么想法可以像我需要处理大量列表那样使此过程更快且资源占用更少? “即时”窗口中的PFB屏幕截图 答案 0 :(得分:3) 好吧,如果订单重要,即 和 然后,您可以在 Linq 的帮助下检查相等性: 答案 1 :(得分:2) 有一个 如果您像这样包装它: 然后您可以在外部( 也许比 添加:如果您喜欢 这使用方法组 答案 2 :(得分:0) 也许您正在寻找this answer List<string[]>
中的值。我们需要比较执行操作前后的值,这不应影响表的内容。List<string[]> ExpRequestItemsWithSection
List<string[]> ActRequestItemsWithSection
bool isRequestsMatch = true;
for (int i = 0; i < ActRequestItemsWithSection.Count; i++)
{
if (!((ActRequestItemsWithSection[i][0] == ExpRequestItemsWithSection[i][0]) &&
(ActRequestItemsWithSection[i][1] == ExpRequestItemsWithSection[i][1])))
isRequestsMatch = false;
}
3 个答案:
android:inputType="textNoSuggestions"
{["A", "B"]} != {["B, A"]} // A and B swapped within the array
{ {
["A", "B"], ["C"], // [A, B] and [C] arrays are swapped
["C"] != ["A, "B"]
} }
System.Collections.StructuralComparisons.StructuralEqualityComparer
,但是出于某种晦涩的原因,它以丑陋的非泛型方式编写,因此很难用作泛型IEqualityComparer<>
。class GenericStructuralEqualityComparer<T> : EqualityComparer<T>
where T : System.Collections.IStructuralEquatable
{
public override bool Equals(T x, T y)
=> System.Collections.StructuralComparisons.StructuralEqualityComparer.Equals(x, y);
public override int GetHashCode(T obj)
=> System.Collections.StructuralComparisons.StructuralEqualityComparer.GetHashCode(obj);
}
SequenceEqauls
)级别执行List<>
:if (!
ExpRequestItemsWithSection.SequenceEqual(ActRequestItemsWithSection,
new GenericStructuralEqualityComparer<string[]>())
)
.Zip
解决方案还漂亮?
.Zip
,则可以使用StructuralEqualityComparer
,而无需包装类:if (
ExpRequestItemsWithSection.Count != ActRequestItemsWithSection.Count
||
ExpRequestItemsWithSection.Zip(ActRequestItemsWithSection,
System.Collections.StructuralComparisons.StructuralEqualityComparer.Equals)
.Contains(false)
)
System.Collections.StructuralComparisons.StructuralEqualityComparer.Equals
的签名和返回类型足以满足Func<string[], string[], bool>
所采用的.Zip
的要求(与C#7.3编译器一起尝试)。if (a1.SequenceEqual(a2))