LINQ到对象和排序顺序
我正在尝试使用包含自定义对象的ArrayList。数组列表已排序。我正在使用LINQ to对象在多个字段上搜索。LINQ to objects search将使用底层排序,还是将扫描整个arraylist。LINQ扩展方法将不会利用底层排序。这些方法是为处理IEnumerable而编写的,因此不能对底层集合进行任何假设。从实现来看,一些LINQ方法将检查输入是否是ICollection,如果是,则调用相应的方法(我相信Count()是这样工作的),以避免进行线性扫描,但在这种情况下,LINQ无法检测数组是否已排序,因此无法利用这一事实LINQ到对象和排序顺序,linq,sorting,arraylist,Linq,Sorting,Arraylist,我正在尝试使用包含自定义对象的ArrayList。数组列表已排序。我正在使用LINQ to对象在多个字段上搜索。LINQ to objects search将使用底层排序,还是将扫描整个arraylist。LINQ扩展方法将不会利用底层排序。这些方法是为处理IEnumerable而编写的,因此不能对底层集合进行任何假设。从实现来看,一些LINQ方法将检查输入是否是ICollection,如果是,则调用相应的方法(我相信Count()是这样工作的),以避免进行线性扫描,但在这种情况下,LINQ无法
此外,如果您正在执行类似myList.Where(o=>o.Prop1<2&&o.Prop2==3)的操作,则传递到Where()的Func对于LINQ来说是完全不透明的,因此即使它知道列表已排序,也无法确定正在检查哪些属性。不要再使用
ArrayLists
,而是使用严格键入的列表
。