【发布时间】:2014-11-23 13:08:58
【问题描述】:
我有这样的课,
class Test
{
public int ID { get; set; }
public string Name { get; set; }
}
我也有一个 List ids;
我想选择列表中其 ID 在列表 ID 中的所有元素。我目前的解决方案是这样的:
var v = from t in tests where ids.Contains(t.ID) select t;
如果List的数量很大,超过10000条,是不是一种有效的方法?
谢谢
【问题讨论】:
-
多大是多大?列表中有多少元素?您是否已经以某种方式衡量了性能?
-
如果你有一个列表,那么你总是需要检查所有条目,无论如何都需要 O(n)。唯一可以更快的是某种具有 O(1) 访问权限的字典或地图。
-
如果您按 id 对两个列表进行排序,则可以线性进行搜索。但是字典当然会更快。
-
列表中的元素超过10000,我还没有做任何性能测试。