Хобрук: Ваш путь к мастерству в программировании

Сортировка списка строк как целых чисел в LINQ С#

У меня есть список объектов (RunSummary), отсортированный по столбцу UniqueId, затем по столбцу RunNo. Но UniquId объекты относятся к типу String. Я хочу отсортировать по UniqueId как Integer объектов (не как 1,10,11,3, а 1,3,10,11). Вот мой код:

public List<RunSummary> GetRunSummariesForUniqueIds(List<String> uniqueIds)
{
    using (var context = new ELSORegistryEntities())
    {
        context.Configuration.ProxyCreationEnabled = false;

        List<RunSummary> runSummaries = context.RunSummaries
            .Where(param => uniqueIds.Contains(param.UniqueId))
            .OrderBy(param => param.UniqueId)
            .ThenBy(param => param.RunNo)
            .ToList<RunSummary>);              

        return runSummaries;
    }
}        

я пробовал с

List<RunSummary> runSummaries = context.RunSummaries
    .Where(param => uniqueIds.Contains(param.UniqueId))
    .OrderBy(param => Convert.ToInt32(param.UniqueId))
    .ThenBy(param => param.RunNo)
    .ToList<RunSummary>();

но это не работает. Как сортировать в LINQ?


  • Что конкретно не работает? Вы получаете исключение? Или если вы получаете неправильные результаты, что это такое? 20.06.2016
  • @juharr Я не думал, что вы можете использовать такую ​​​​функцию, как int.Parse(param.UniqueId), внутри запроса DBContext? 20.06.2016
  • Я предполагаю, что вы не можете использовать Convert.ToInt32 в запросе LINQ к БД, но дайте нам ответ, что не так.. 20.06.2016
  • Возможно, связано с stackoverflow.com/questions/16694716/ 20.06.2016
  • Вы можете сделать ToList перед сортировкой и после этого использовать логику разбора int... 20.06.2016
  • @Sam.C Еще лучше использовать AsEnumerable. 20.06.2016
  • У меня есть исключение: LINQ to Entities не распознает метод Int32 ToInt32(System.String), и этот метод не может быть преобразован в выражение хранилища. 20.06.2016
  • Не могу согласиться с закрытием темы. Данный ответ на выбранный пост не является правильным ответом. Это работает, но это неправильно. 20.06.2016
  • Почему значения UniqueId хранятся в виде строк? Если они действительно целые, то в вашей схеме они должны иметь другой тип данных. 20.06.2016

Ответы:


1

вы не можете использовать Convert.ToInt32 внутри запроса, вы должны заказать после запроса

List<RunSummary> runSummaries = context.RunSummaries.Where(param => uniqueIds.
Contains(param.UniqueId)).ToList<RunSummary>()
.OrderBy(param => Convert.ToInt32(param.UniqueId))
.ThenBy(param => param.RunNo).ToList();
20.06.2016
  • Спасибо. К сожалению, я получил FormatException: входная строка имеет неправильный формат. 20.06.2016
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..