LINQダイナミッククエリ結果をカスタムクラスとしてキャストする方法は?
-
22-09-2019 - |
質問
通常、私はこれをします:
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 )");
同一の結果を作成するためにどの構文を変更できますか、つまり、2番目のLINQステートメントからカテゴリの予測を行うにはどうすればよいですか?
私は両方で知っています g と それ 同じであり、テーブルレコード全体を表しています、そしてそれは カウントを行うためだけにレコード全体を引っ張っています。私もそれを修正する必要があります。 編集:Marcelo Cantosは、LINQは不要なデータを引かないほど賢いと指摘しました。ありがとう!
解決
なぜあなたはそれをまったくしなければならないのですか?グループごとの呼び出し後もすべての情報があるため、これを簡単に実行できます。
var a = Products
.Where("ProductType == @0", "Tee Shirt")
.GroupBy("ProductColor", "it")
.Select(c => new Category {
PropertyType = g.Key, Count = g.Count()
});
製品の種類は引き続き流れてアクセス可能である必要があり、通常のグループ化/フィルタリングは、拡張メソッドを流れるタイプを変異させるべきではありません。
所属していません StackOverflow