Как реализовать поиск с помощью 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 шт):

Автор решения: B0lver

Для того, чтобы скрывать элементы и при этом не терять данные, можно сделать несколько списков. Например, так:

List<Product> ProductsSource;
public List<Products> Products {get;set;}

Затем в инициализации:

Products = ProductsSource;
dataGridView.DataSource = Products;

А для поиска элемента можно написать LINQ-выражение. Видео по теме :

var query = ProductsSource.MinBy(p => p.Price);

Далее, чтобы отобразить только минимальный элемент, нужно присвоить результат в свойство Products. Для поиска максимума можно использовать функцию MaxBy().

→ Ссылка