Как реализовать поиск с помощью LINQ в dataGridView?
Здраствуйте! Возникла проблема с поиском с использованием LINQ в элементе управления dataGridView
В него добавлены товары. товар описан как класс. Он реализуется вот так:
public class Product
{
public string Goods{ get; set;}
public double Price {get; set;}
public double Kcal {get; set;}
public Product(string name, double price, double kcal)
{
Goods = name;
Price = price;
Kcal = kcal;
}
}
public List<Product> Products;
public Form2()
{
InitializeComponent();
Products = new List<Product>{ new Product("blablabla1", 300.0, 3500.0), new Product("blablabla2", 123.0, 2000);
dataGridView.DataSource = Products;
}
private void LINQSeachBtn_Click(object sender, EventArgs e)
{
if(comboBox1.Text.ToString() == "Самый дёшевый товар")
{
var query = // как тут реализовать поиск самого дешевого товара который есть в гриде и скрыть все остальные?
}
// Аналогично и с самым дорогим товаром
}
Задача: В начале отображаються все товары которые есть(их название, цена, калорийность и так далее) нужно с помощью LINQ реализовать поиск самого дешевого товара которые инициализируются в списке таким вот образом как я описал в шаблоне кода
Буду очень благодарен! Самый полезный ответ отмечу галочкой :)
Ответы (1 шт):
Для того, чтобы скрывать элементы и при этом не терять данные, можно сделать несколько списков. Например, так:
List<Product> ProductsSource;
public List<Products> Products {get;set;}
Затем в инициализации:
Products = ProductsSource;
dataGridView.DataSource = Products;
А для поиска элемента можно написать LINQ-выражение. Видео по теме :
var query = ProductsSource.MinBy(p => p.Price);
Далее, чтобы отобразить только минимальный элемент, нужно присвоить результат в свойство Products. Для поиска максимума можно использовать функцию MaxBy().