Search code examples
c#linqentity-frameworklinq-to-entities

How can I get the count in linq?


I have table called products with columns:

productid ,
productname,
productprice
categoryid

My problem is I want to get the number of products depending on product name along with details. I want to show the data in DataGridView. How can I know the number of products for a single product name like below?

productid        productname          productavailable        productprice
--------------------------------------------------------------------------
1                product A            2 products(product A)   100
2                product B            5 Products(product B)   200

Like the above table I have to display in DataGridView. I am using LINQ and C# and my DbContext name is tsgdbcontext.


Solution

  • Use GroupBy with a key that contains your grouping properties. Then select out the key properties along with the count of each from the grouping.

    var query = tsgdbcontext.Products
                            .GroupBy(p => new {
                                p.ProductId,
                                p.ProductName,
                                p.ProductPrice
                             })
                            .Select(g => new {
                                g.Key.ProductId,
                                g.Key.ProductName,
                                g.Key.ProductPrice,
                                Available = g.Count()
                            });