tco*_*ode 4 linq linq-to-entities entity-framework
我有以下代码返回一个对象列表.
var listOfLogins = _logService.GetLogEventsByItemID(137).ToList();
Run Code Online (Sandbox Code Playgroud)
我想获得此列表中的第二个最后一个对象.
有没有人知道如何使用Linq to Entities做到这一点?
谢谢.
var secondlast = _logService.GetLogEventsByItemID(137)
.Reverse()
.Skip(1)
.Take(1)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
更新
@Dherik在他的评论中提出了一个很好的观点,它.Reverse在LINQ to Entities中实际上不受支持,并且会导致在调用reverse的时候评估查询,而不是在调用时.FirstOrDefault.有关所有(非)支持的方法,请参见此处.
替代方案(LINQ to Entities friendly)解决方案要求您有一个合适的字段来排序(无论如何必须是这种情况,否则"倒数第二"没有相关性):
var secondlast = _logService.GetLogEventsByItemID(137)
.OrderByDescending(e => e.EventDate /* could be any db field */)
.Skip(1)
.Take(1)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1965 次 |
| 最近记录: |