Можно ли сделать фильтрацию по цене в ListView
У меня есть ListView в котором указаны товары и их цена, мне нужно сделать фильтрацию например ввожу от 1000 до 3000 и в ListView выдаются товары попадающие под этот иапазон.
Пытался сделать так:
var currentProc = KOMPMarketEntities1.GetContext().Processors.ToList();
if (ot.Text.Length > 0 || ido.Text.Length > 0)
{
currentProc = currentProc.Where(p => p.Price > ot.Text.Length).ToList();
currentProc = currentProc.Where(p => p.Price < ido.Text.Length).ToList();
}
LViewProc.ItemsSource = currentProc.OrderBy(p => p.IdProcessor).ToList();
"ot" - это TextBox в который вводиться цена начала диапозона
"ido" - это второй TextBox в который вводиться цена конца диапозона
"Price" - это ячейка в таблице с товарами обозначающая цену
Мне кажется нужно изменить "Length" в этой строке (p => p.Price > ot.Text.Length)
но я не знаю на что можно изменить чтобы всё работало корректно
Ответы (1 шт):
Если просто фильтрация по цене, то как-то так, при условии, что p.Price
это число int
:
IQueryable<Processor> currentProc = KOMPMarketEntities1.GetContext().Processors;
if (int.TryParse(ot.Text, out int from))
{
currentProc = currentProc.Where(p => p.Price >= from);
}
if (int.TryParse(ido.Text, out int to))
{
currentProc = currentProc.Where(p => p.Price <= to);
}
LViewProc.ItemsSource = currentProc.OrderBy(p => p.IdProcessor).ToList();
Что касается вывода в диапазоне от 1000 до 3000, посмотрите этот ответ.