web-dev-qa-db-ja.com

linqでカウントを取得するにはどうすればよいですか

列を持つproductsというテーブルがあります:

productid ,
productname,
productprice
categoryid

私の問題は、製品名と詳細に応じて製品の数を取得することです。 DataGridViewのデータを表示したい。以下のような単一の製品名の製品数を知るにはどうすればよいですか?

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

上記の表のように、DataGridViewに表示する必要があります。 LINQとC#を使用しており、DbContextの名前はtsgdbcontextです。

19
Enigma State

GroupByは、グループ化プロパティを含むキーとともに使用します。次に、selectからキープロパティとグループ化からの各カウントを出力します。

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()
                        });
41
tvanfosson

私が正確に理解しているかどうかはわかりませんが、いくつかの仮定を立てていますが、これは、任意の選択基準(id = 2および100を超える価格)に基づいてカウントを生成するlinqクエリの例です...

int count = (from p in tsgdbcontext.Products
             where p.productid == 2 && p.productprice > 100
             select p).Count();
31
blins