2011-10-12 69 views

回答

4

之间更有效。如果你只是在做一个查询,非字典一个是速度更快,因为它避免了建立字典的开销。

如果您要在同一个数据集上进行大量查找,字典的速度会更快,因为它是专门设计用于通过单个密钥快速查找的数据结构。你做的查找越多,建立字典的开销就越值得。

+0

我正在做很多查找(不只是一个),所以接受这个答案。 – Tija

1

我想你的第一个将是最快的,因为它最有可能不必遍历整个列表。我会稍微修改它看起来更像这样:

object found = myList.FirstOrDefault(m => m.ID == id); 
0

那么,我使用第二种方法时,我有一个大的列表和很多TryGetValues。

我的经验是,在这些条件下,这是更大的幅度。

第一个查找速度更快。

我从来没有使用秒表或类似的东西来证明这一点,所以我不能告诉你哪里是盈亏平衡点。

2

除了已经指出的内容之外,这两个代码块并不完全相同。在第一个例子中,'found'将是一个IEnumerable,在第二个例子中它将是一个bool,foundItem将是存储在myList中的任何东西。

+0

谢谢,我更新了这个问题,以便更清楚 – Tija