我有一个非常简单的SortedSet,它有一个基于两个类字段排序的CompareTo方法。就像它被使用的那样,这个集合可以获得相当大的(百万以上的对象),并随着时间的推移而增长和增长。我一直在使用一个简单的Contains方法来确定一个新的值是否已经存在于集合中...SortedSet <T> Contains vs Linq查询
作为一个学术练习,我正在使用Linq(我很新)来达到同样的效果并且肯定我对Linq有一些了解,我缺乏,因为我无法远程接近相同的表现,而且我想知道是否一些Linq大师能够给我一个关于如何加快速度的指示。
所以...对象具有的CompareTo看起来是这样的:
public int CompareTo(EntityHistoryChange other)
{
int recordIdComp = Recordid.CompareTo(other.Recordid);
int tableIdComp = Tablename.CompareTo(other.Tablename);
if (recordIdComp == 0 && tableIdComp == 0)
return 0;
else if (recordIdComp != 0)
return recordIdComp;
else
return tableIdComp;
}
上简单的列表中的相应Linq查询:
var handledChange = from thisChange in handledChanges
where thisChange.Recordid == recordId
&& thisChange.Tablename == tableName
select thisChange;
我想结果应该不会让我感到吃惊。 ..
Linq Lookup on 18772 rows: 46 ms
SortSet Lookup on 18772 rows: 3 ms
所以问题是 - 什么是等效的LINQ机制?
考虑到Linq增加的抽象层,这看起来很不错。 – 2010-08-05 17:04:57