4Manuals

  • PDF Cloud HOME

如何在C#中比较两个List <string []> Download

    获取Hough线的交点OpenCV C ++ 如何将字符串“ text1”设置为包含项目text1,text2,test3的组合框的选定项目? 为什么System.Net.Mail.MailAddress构造函数在域部分中解析带有斜杠“ /”的电子邮件? Android 10,API29:在应用程序文件夹中使用C ++库编写文件会使应用程序崩溃 Unity-LineRenderer没有出现在版本(2D)上 按下按钮后,电话中未显示通知 ASP.net,使用WebConfig httpErrors重定向到区域内的控制器不起作用 获取会议室详细信息 我们如何将参数Line转换为Station? 网络核心:查找实体框架核心的主键和反射

自动化-使用C#硒

我们正在读取一个表,该表返回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;
}

“即时”窗口中的PFB屏幕截图

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:3)

好吧,如果订单重要,即

android:inputType="textNoSuggestions" 

和

 {["A", "B"]} != {["B, A"]}   // A and B swapped within the array

然后,您可以在 Linq 的帮助下检查相等性:

 {                   { 
  ["A", "B"],         ["C"],     // [A, B] and [C] arrays are swapped
  ["C"]        !=     ["A, "B"]
 }                   }

答案 1 :(得分:2)

有一个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编译器一起尝试)。

答案 2 :(得分:0)

也许您正在寻找this answer

if (a1.SequenceEqual(a2))



Similar searches
    使用React进行照片上传验证 使用create-react-app和svgr的webpack错误 获取可见图像的链接 sqlite3和pdo_sqlite不在php apache2 localhost中加载,但在php cmd窗口中加载 需要有关oxmlelement的指导和技巧