6

通常、私はこれを行います:

var a = from   p in db.Products
        where  p.ProductType == "Tee Shirt"
        group  p by p.ProductColor into g
        select new Category { 
               PropertyType = g.Key,
               Count = g.Count() }

しかし、私は次のようなコードを持っています:

var a = Products
        .Where("ProductType == @0", "Tee Shirt")
        .GroupBy("ProductColor", "it")
        .Select("new ( Key, it.Count() as int )");

同一の結果を生成するためにどの構文を変更できますか?

gitの両方が同じで、テーブル レコード全体を表していること、およびカウントを行うためだけにレコード全体を取得していることを知っています。私もそれを修正する必要があります。 編集: Marcelo Cantos は、Linq は不要なデータをプルしないほど賢いと指摘しました。ありがとう!

4

1 に答える 1

2

なぜあなたはそれをしなければならないのですか?GroupBy の呼び出し後もすべての情報が残っているため、これを簡単に行うことができます。

var a = Products
        .Where("ProductType == @0", "Tee Shirt")
        .GroupBy("ProductColor", "it")
        .Select(c => new Category { 
            PropertyType = g.Key, Count = g.Count() 
        });

Products のタイプは引き続き通過し、アクセス可能である必要があり、通常のグループ化/フィルタリングは、拡張メソッドを通過するタイプを変更してはなりません。

于 2010-03-29T17:24:09.690 に答える