相关疑难解决方法(0)

两个列表之间的差异

我有两个填充了CustomsObjects的通用列表.

我需要在第三个列表中检索这两个列表(第一个没有第二个项目的项目)之间的差异.

我在想使用.Except()是一个好主意,但我不知道如何使用这个..帮助!

c#

104
推荐指数
6
解决办法
14万
查看次数

有没有办法在c#中获得两组对象之间的区别?

我想在c#中获得两组int之间的区别.给定s1和s2我想返回那些在s1而不在s2中的int.我可以做一些事情,比如:

    List<int> s1 = new List<int>();
    List<int> s2 = new List<int>();

    foreach (int i in s1)
    {
        if (s1.Contains(i))
        {
            //
        }
        else
        {
            //
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有人能指出更清洁的东西.我想做点什么

List<int> omitted = s1.Difference(s2);
Run Code Online (Sandbox Code Playgroud)

不确定是否有任何人可能指出的现有方法或LINQ结构?谢谢.

.net c# linq hashset

20
推荐指数
3
解决办法
1万
查看次数

如何在linq中使用方法

我有课:

class SomeClass
{
   public string Name{get;set;}
   public int SomeInt{get;set;}
}


class SomeComparison: IEqualityComparer<SomeClass>
{
     public bool Equals(SomeClass s, SomeClass d)
     {
         return s.Name == d.Name;
     }

     public int GetHashCode(SomeClass a)
     {
         return (a.Name.GetHashCode() * 251);
     }
}
Run Code Online (Sandbox Code Playgroud)

我也有两个List<SomeClass>大叫list1list2

在我以前之前:

 var q = (from a in list1
         from b in list2
         where a.Name != b.Name
         select a).ToList();
Run Code Online (Sandbox Code Playgroud)

这花了大约1分钟来执行.我现在有:

var q =  list1.Except(list2,new SomeComparison()).ToList();
Run Code Online (Sandbox Code Playgroud)

这需要不到1秒!

我想了解Except方法的作用.该方法是否为每个列表创建哈希表,然后执行相同的比较?如果我要进行大量的比较,我应该创建一个Hashtable吗?


编辑

现在我没有列表,而是有两个HashSet<SomeClass>叫做 hashSet1hashSet2

当我做:

   var q …
Run Code Online (Sandbox Code Playgroud)

c# linq comparison performance hashtable

12
推荐指数
1
解决办法
9016
查看次数

C#如何快速处理大数据列表

我试图找到一些关于我的问题的文章,但没有找到任何相关的或对我的应用程序有意义的文章。这是我的问题:

我有两个(> 20,000)个项目的列表。

我需要根据相反列表中的每个项目检查每个列表中的每个项目。

像这样的实现:

    foreach(var item1 in List1)
    {
         foreach(var item2 in List2)
         {
              // Check item 1 against item 2. 
              // Check item 2 against item 1.
         }
    }
Run Code Online (Sandbox Code Playgroud)

由于为检查所做的工作,速度非常慢且无法使用。

有没有更有效的方法来处理这些需要像这样检查的大型项目列表?

如果我能提供更多信息,请告诉我。感谢您的任何帮助/建议。

我正在使用 C# .NET 3.5

编辑:让我试着简要解释一下这些检查。

item1 和 item2 是路径系统的一部分。item1 和 item2 由 N 个其他项目连接。我正在检查 item1 是否连接(有效路径)到 item2,并且 item2 连接到 item1。不能假设如果 item1 -> item2,比 item2 -> item1。所以这两项检查都是必要的。

数据库包含信息 if 和 how item1 -> item2 和 if/how item2 -> item1。在检查内部,有一个对服务的命名管道调用来进行检查。该服务会执行所有路径检查,并在 item1 -> item2 等情况下返回。

c#

5
推荐指数
2
解决办法
8640
查看次数

标签 统计

c# ×4

linq ×2

.net ×1

comparison ×1

hashset ×1

hashtable ×1

performance ×1