相关疑难解决方法(0)

使用C#和LINQ比较两个大型字符串列表的最佳方法是什么?

我有一个大的列表(~110,000个字符串),我需要将它与类似大小的列表进行比较.

列表A来自1个系统.列表B来自SQL表(我只能读,没有存储过程等)

找到列表A中哪些值不再存在于列表B中的最佳方法是什么?

100,000个字符串是否需要在数组中处理?

谢谢

c# linq

14
推荐指数
3
解决办法
2万
查看次数

如何在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# ×2

linq ×2

comparison ×1

hashtable ×1

performance ×1