作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从数据库中获取一个项目,以及它之前和之后的项目。
var data= repo .OrderBy(a => a.Date)
.Select((item, index) => new { item, index })
.Where(itemAndIndex=>itemAndIndex.item.Id == someId)
这是我到目前为止得到的结果。
澄清一下,
假设这是我的 table
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
进行选择查询,然后按 Date 字段对结果进行排序,并获得项目列表
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();
关于c# - Entity Framework ,获取选中项的周边项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41565966/
我是一名优秀的程序员,十分优秀!