首页 > 解决方案 > LINQ OrderBy 然后 SELECT 特定索引

问题描述

我有一个数据库表,里面有很多数据。我想按列名对其进行排序TIMESTAMP,然后选择生成的任何给定索引List

int index = 1;
query = dbContext.SimpleAisRecords
                 .OrderBy(ship => ship.TIMESTAMP)
                 // How to get wanted index: --> select/take(index)?;                    

我想这样做的原因是因为我的表只有虚拟数据,我想遍历它。因此我想用所需的索引调用这个方法。第一次迭代index : 1,下一次迭代index : 2等等。我已经看到很多关于如何然后Select再然后的OrderBy问题。OrderBySelectOrderByTake

但正如我所说,我需要一种方法来获取 的特定索引OrderBy,而不是那个的第一项或最后一项OrderBy

那可能吗?

标签: c#linq

解决方案


您可以使用Where(第二个参数是index)的重载:

var model = new int[] { 1, 2, 3, 4, 5, 10, 9, 8, 7 };
var result = model.OrderBy(s => s).Where((s, i) => i > 5).ToList();

更新:

我们可以包含所需的索引范围并将它们签入Where

var indexes = new List<int>{ 1, 8, 5 };
var model = new int[] { 1, 2, 3, 4, 5, 10, 9, 8, 7, 6 };
var result = model.OrderBy(s => s)
    .Where((s, i) => indexes.Contains(i)).ToList();

推荐阅读