c# - 查询存储在字符串 Linq 中的 OrderBy 日期
问题描述
我是 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>();
}
我得到一个错误。有什么建议么?
解决方案
在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
not string
,这将允许使用 linq 进行正确排序。