查询OrderBy存储在字符串Linq

时间:2018-05-26 13:26:12

标签: c# asp.net .net linq sql-order-by

我在asp.net中遇到了一个问题,我想按日期订购一条消息列表。我尝试了一些不同的方法,但是当我将这些日期存储在数据库中的字符串中时,我无法找到一种方法来返回按日期排序的查询结果。

我试过这样的事情:

public static IEnumerable<TResult> GetList<TResult>(IPager pager, string date = null , long? companyId = null, string content = null)
    {

        using (var context = Context.Read())
        {
            var query = context.Query<Message>().AsQueryable();

            if (!string.IsNullOrEmpty(content))
            {
                query = query.Where(p => p.Content.Contains(content));
            }

            return query
                .OrderByDescending(d => DateTime.Parse(d.Date)).Take(10)
                .Pager(pager)
                .GetResult<TResult>();
        }

我得到一个错误。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

DbContext课程中使用此配置可​​以解决您提到的DateTime冲突:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    // Converts to datetime2 to avoid problems with Server dates and .NET dates conflicts
    modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2"));
}

允许您将日期存储为DateTime而不是string,这样可以使用linq进行正确的排序。