从具有指定值的最后一行检索最后n行

时间:2017-10-04 19:50:26

标签: c# sql-server entity-framework

我有一张示例表:

Id  Action  Qty
1   Start   3
2   Give    2
3   Take    1
...
X   Start   8
X+1 Give    5
X+2 Take    3

使用EF,我想从最后一行开始检索最后一行,其中Action =" Start"。

使用上面的示例表,结果应为:

Id  Action  Qty
X   Start   8
X+1 Give    5
X+2 Take    3

以下代码仅在最后一个Action =" Start"之后有2行时才有效。行并非总是如此:

var result = db.Sample.OrderByDescending(x => x.Id).Take(3); // not always 3

1 个答案:

答案 0 :(得分:1)

您可以分组,然后找到Start的最大值,然后获取所有Id大于或等于Start的最大值。实际上,如果您的数据已经过排序,则无需进行分组。

var maxIdOfStart = collection
    .OrderByDescending(x => x.Id)
    .First(x => x.Action == "Start");

var lastNOfStart = collection
    .Where(x => x.Id >= maxIdOfStart.Id);
相关问题