我有一个包含50个已排序项的列表,在其中有几个是优先级较高的(假设它们的标志设置为1)。
默认情况下,我需要按照日期先显示最新的项目,但优先级项目应该在一定数量的记录后出现。如下所示:
索引0:项目
索引1:项目
索引2:优先级项目 (从此位置插入优先级项目)
索引3:优先级项目
索引4:优先级项目
索引5:项目
索引6:项目
预定义了应插入优先级项目的索引“x”。
为了实现这一点,我正在使用以下代码:
这些是我经过排序的50个项目
var list= getMyTop50SortedItems();
获取所有优先级项目并将其存储在另一个列表中。
var priorityItems = list.Where(x => x.flag == 1).ToList();
从主列表中筛选出优先事项
list.RemoveAll(x => z.flag == 1);
在给定位置向主列表中插入优先项。
list.InsertRange(1, priorityRecords);
这个过程正在正确地完成工作并给我期望的结果。但是我不确定这是否是正确的方法,或者是否有更好的方法(考虑性能)?请提供你的建议。
另外,当我进行许多操作(过滤、删除、插入)时,随着记录数从50增加到100000(任意数字),性能会受到影响吗?
更新:如何使用IQueryable减少对列表的操作次数?