c# – 实体框架,获取所选项目的周围项目
发布时间:2020-12-15 22:41:08 所属栏目:百科 来源:网络整理
导读:我想从db获取一个项目,以及它之前和之后的项目. var data= repo .OrderBy(a = a.Date) .Select((item,index) = new { item,index }) .Where(itemAndIndex=itemAndIndex.item.Id == someId) 这是我到目前为止所得到的. 澄清, 让我们说这是我的表 Id Name Date
我想从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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |