我想从db获取一个项目,以及它之前和之后的项目.
var data= repo .OrderBy(a => a.Date) .Select((item,index) => new { item,index }) .Where(itemAndindex=>itemAndindex.item.Id == someId)
这是我到目前为止所得到的.
澄清,
让我们说这是我的表
Id Name Date 1 SomeText1 01.01.2017 2 SomeText2 03.01.2017 3 SomeText3 02.01.2017 4 SomeText4 04.01.2017 5 SomeText5 05.01.2017
我想对Id == 3进行选择查询,然后按日期字段对结果进行排序,并获取项目列表
Id Name Date 1 SomeText1 01.01.2017 3 SomeText3 02.01.2017 2 SomeText2 03.01.2017
像这样.
谢谢.
解决方法
这与
Harald Coppoolse’s answer中的想法相同(我认为这是满足您需求的唯一合理方式),但最佳(IMO)LINQ to Entities SQL查询转换(假设repo是IQueryable< T>表示您的表):
var data = repo .Where(elem => elem.Id == someId) .SelectMany(elem => repo.Where(e => e.Date < elem.Date).OrderByDescending(e => e.Date).Take(1) .Concat(new[] { elem }) .Concat(repo.Where(e => e.Date > elem.Date).OrderBy(e => e.Date).Take(1))) .ToList();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。