У меня есть база данных с столбцом: Год (nvarchar), и я хочу добавить значения этого столбца в dropbox, отсортированный по убыванию.Linq filter using List <int>
Это код, который я использую:
List<string>years = db.tbl1.Select(w => w.Year).Distinct().ToList();
years.reverse();
foreach (string year in years) { drop_years.Items.Add(year);}
Это не работает, потому что неоспоримым строку у меня будет что-то вроде этого: 2012, 2010, 2009, 2011, и т.д ..
Если я использую:
List<int> years = db.tbl1.Select(w => w.Year).Distinct().ToList();
компилятор скажите мне, что не может immplicitly преобразовать тип .. < строка> в .. < Int> ...
Я являюсь продавцом, и я не знаю, как решить эту проблему. Не могли бы вы помочь?
Я пробовал об этом, но подобные темы с моим не помогли мне разобраться.
Чтобы управлять моей проблемы я использовал очень непрофессиональный метод:
var years = db.tbl1.Select(w => w.Year).Distinct();
List<int> yearsList = new List<int>();
foreach (string year in years)
{ yearsList.Add(Convert.ToInt32(year)); }
yearsList.Sort(); //I used Sort() because doesn't work only with Reverse();
yearsList.Reverse();
, но я знаю, что это не элегантное решение.
Заранее благодарю вас за помощь!
Обратный() просто отменяет порядок, из которого он вышел из базы данных. Не гарантировано, что они выйдут на предварительную сортировку! Вам нужно будет вызвать SortBy или SortByDescending, чтобы получить требуемый заказ. Затем выполните соответствующий синтаксический анализ или бросок. У тебя это было почти так! –
«2012, 2010, 2009, 2011» не является сортированным списком строк. Как говорит Эрик, вы просто не сортируете его из базы данных. Предполагая, что все ваши годы четыре цифры, вы сможете упорядочить их сортировку. Его только тогда, когда у вас есть разные числа цифр, которые возникают с номерами сортировки строк (например, 1, 10, 2, 3) – Chris
Похоже, что в этом запросе тип должен быть конкретно числовым (ints в этом случае), а не строковым. Если бы мы знали существующий тип данных в базе данных года и какой тип конца должен быть, мы могли бы быть более явными в примере кода. –