我有一张示例表:
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
答案 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);