相关疑难解决方法(0)

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

comparison ×1

hashtable ×1

linq ×1

performance ×1