【问题标题】:Comparing contents of a List<int> to find matches比较 List<int> 的内容以查找匹配项
【发布时间】:2011-08-19 17:26:48
【问题描述】:

对于我正在编写的一些代码,我有一个方法可以检查新对象与所有现有对象的相似属性。

此方法返回Dictionary&lt;int, List&lt;int&gt;&gt;。它们的关键是唯一的对象 ID,列表包含与新对象相似的属性。 (Constant.Name、Constant.StartDt 等)。

现在,有几种不同类型的匹配是不可能发生的。我需要一种方法来将匹配的各种组合与这些列表中的内容进行比较,并且我需要能够知道哪个匹配已匹配。

因此,我正在考虑为每个匹配项创建一个列表,并将每个列表与返回的属性列表进行比较。但是,我知道我以前在 Java 中做过类似的事情,但它有一个缺陷 - 它按顺序匹配...我只需要知道每个列表是否包含这些项目。

所以,两个问题:

  1. 这是查找匹配项的最佳方式吗?
  2. 如果是这样,您建议的方法是什么?循环通过它们?还是 C# 中内置了一些我不知道的东西?

【问题讨论】:

    标签: c# visual-studio-2010 list dictionary compare


    【解决方案1】:

    您可以使用 LINQ Intersect 方法:

    http://msdn.microsoft.com/en-us/library/system.linq.enumerable.intersect.aspx

            int[] id1 = { 44, 26, 92, 30, 71, 38 };
            int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };
    
            IEnumerable<int> both = id1.Intersect(id2);
    
            foreach (int id in both)
                Console.WriteLine(id);
    

    【讨论】:

    • 这看起来很完美。我会在我的代码中尝试一下,以确保一切顺利。
    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多