C# 列表方法:ElementAt(索引)与Find(内容)

C# 列表方法:ElementAt(索引)与Find(内容),c#,linq,list,C#,Linq,List,我目前正在构建一个非常依赖效率的数据结构 有人能为我提供有关Find(item=>item.X=myObject.Property)方法实际工作原理的资源吗? 它会在所有元素中线性迭代直到找到元素吗 如果我知道myObject的索引,并且使用ElementAt(索引),会怎么样 请问这两种方法中哪一种效率最高?来自 该方法执行线性搜索;因此,该方法是一个O(n)操作,其中n是Count 我认为ElementAt针对IList进行了优化,并将执行直接索引。但是,既然您显然是在使用列表中的这个对象,

我目前正在构建一个非常依赖效率的数据结构

有人能为我提供有关Find(item=>item.X=myObject.Property)方法实际工作原理的资源吗? 它会在所有元素中线性迭代直到找到元素吗

如果我知道myObject的索引,并且使用ElementAt(索引),会怎么样

请问这两种方法中哪一种效率最高?

来自

该方法执行线性搜索;因此,该方法是一个O(n)操作,其中n是Count

我认为
ElementAt
针对
IList
进行了优化,并将执行直接索引。但是,既然您显然是在使用
列表中的这个对象,那么为什么不直接进行索引呢?像这样:

var result = list[index];
如果您已经知道索引,那么搜索就没有意义了。直接去吧。

该方法执行线性搜索;因此,该方法是一个O(n)操作,其中n是Count

我认为
ElementAt
针对
IList
进行了优化,并将执行直接索引。但是,既然您显然是在使用
列表中的这个对象,那么为什么不直接进行索引呢?像这样:

var result = list[index];

如果您已经知道索引,那么搜索就没有意义了。直接执行即可。

ElementAt尝试将集合强制转换为IList,如果成功,它将返回请求索引处的元素。如果没有,它将使用enumeratorElementAt尝试将集合强制转换为IList,如果成功,它将返回请求索引处的元素。如果不是,它将使用枚举器