有没有其他方法可以使用List.Single来获取带有主键的元素?

时间:2010-03-03 10:26:45

标签: .net linq collections

我有一个来自我的数据存储的用户对象列表。

现在,一旦它已经在内存中,通过他的ID获取用户的唯一方法是使用Single扩展方法。这实际上是性能下降。

我知道我可以使用字典而不是列表,但这可能是多余的。我必须存储主键2次。那么还有另一种方法可以做我想要的吗?

BTW我正在制作一个可以做这样的事情的自定义课程,但我希望有一些开箱即用的东西。

2 个答案:

答案 0 :(得分:2)

假设主键是引用类型,您只需将引用存储到主键两次。

您是否尝试过使用Dictionary<,>并发现它效果不佳?这当然是最自然的解决方案。 KeyedCollection<,>(由马克建议)肯定也会起作用,但要求你从类中派生出来 - 我不想保证它实际上会节省任何记忆。 (您需要知道实现细节 - 例如,它可以很容易地在内部使用Dictionary。)

答案 1 :(得分:1)

您可以将内存中的用户保存在KeyedCollection