Entity Framework 分页(Select 记录使用字符串日期时间列)

Entity Framework Pagination (Select records using string datetime column)

我有一个table,它有开始日期(格式"yyyymmddhhss"),对应的实体属性是字符串类型。我想使用 LINQ SQL 获取 StartDate >= SelectedStartDate 的所有记录。由于这个table有超过1000万条记录,我也需要使用分页

任何人都可以建议如何实现这个/

此致,

拉吉

最好的解决方案当然是将字符串值迁移到 DATETIME 列并从该列查询数据。

但是如果您没有足够的权限来执行此操作,那么幸运的是您在 table 中使用了 yyyymmddhhss 格式,因为它保留了日期的自然顺序;您所要做的就是将参数转换为所需格式的字符串:

public IEnumerable<YourDataObject> GetData(DateTime date, PageInfo pageInfo)
{
    var startDate = date.ToString("yyyyMMddHHss");
    return _dbContext.Table
        .OrderBy(x => x.StartDate)
        .Where(x => String.Compare(x.StartDate, startDate) >= 1)
        .Skip(pageInfo.PageSize * pageInfo.PageIndex)
        .Take(pageInfo.PageSize)
        .Select(x => new YourDataObject
        {
            //
        });
}

这是 LINQPad 中的示例输出: