Запрос OrderBy Даты хранятся в строке Linq - PullRequest
0 голосов
/ 26 мая 2018

Я новичок в 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 голосов
/ 26 мая 2018

Использование этой конфигурации в классе 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.

...