考虑以下日期列表
ID NAME DATE
1 Mary 01-01-1901
2 Mary 01-01-1901
3 Mary 01-01-1901
4 Mary 01-01-1901
5 Lucy 01-01-1951
6 Peter 01-01-1961
以上是按日期排序的列表。因此,在数据库中,它不是这样表示的。
我正在尝试获取列表BY DATE中的下一条记录。我正在做的是,检索列表 来自数据库的人员,然后按日期排序,然后按ID排序。发生了什么事情 返回的ID始终相同:
下一个记录 - > 2 - >下一个记录 - > 1 - >下一条记录2 等等......似乎我被困在前两个记录中。我正在使用LINQ-to-SQL
以下是我用来实现此目的的代码
string newID = dx.Persons
.AsEnumerable()
.ToList()
.Where(
x => x.DOB.CompareTo(newConvertedValue) == 0 && x.Id > currentID
||
x.DOB.CompareTo(newConvertedValue) > 0 && x.Id != currentID)
.OrderBy(x => x.DOB)
.ThenBy(x => x.Id)
.Select(x => x.Id.ToString(CultureInfo.InvariantCulture))
.First();
对我来说,在指定Where条件之后订购列表是没有意义的,但是当我尝试修改时 声明我在序列异常中得到了一个无元素。
请注意,上述变量具有以下含义: newConvertedvalue =当前显示记录的出生日期 currentID =当前显示记录的ID。
我尝试过使用不同的解决方案,但似乎无法找到解决此问题的方法。
我已经实现了类似的方法来为包含整数和字符串的列排序和获取下一条记录, 工作正常(也感谢这个伟大的网站的贡献)。 但是这个包含日期的专栏让我很难过。
感谢阅读。
答案 0 :(得分:0)
使用
var Ids = dx.Persons
.AsEnumerable()
.ToList()
.Where(x => x.DOB.CompareTo(newConvertedValue) == 0 && x.Id > currentID
||
x.DOB.CompareTo(newConvertedValue) > 0 && x.Id != currentID)
.OrderBy(x => x.DOB)
.ThenBy(x => x.Id)
.Select(x => new { ID = Id, Date = DOB })
.ToList();
Ids.ForEach(x => Console.WriteLine(x.ID));