2011-08-01 9 views
1

私は、LinqからSQLクエリを介して返すオブジェクトのセットを持っています。私はフィールドのいずれかが一致するときにのみ結合されているオブジェクトのセットを返すようにクエリを変更したいと思います。Linq to SQL:1つのフィールドの合計だけでオブジェクトを結合する

私のProducts DBテーブルの関連する列は、CategoryIDQuantityです。 CategoryIDが同一である場合、Quantityフィールドが合計されるようにフィールドを結合したいと思います。しかし、私は和を求めているだけではありません - すべての共通フィールドを持つオブジェクトが必要です(他のフィールドはすべてクエリと同じです)ので、タイプProductという1つのオブジェクトとして表示されます。

これは可能ですか? (私はVB.netを使用していますが、データベースビュー、部分クラスなどのソリューションを公開しています)

+0

ちょっと好奇心が強いのはなぜでしょうか?あるカテゴリ内の製品のフィールドが常に同じであれば、 'Categories'テーブルの方が良いと思われます。 –

+0

これはとても抽象的です。同じCategoryIDを持つ2つの製品を示すサンプルデータを表示できますか?その結果はどうなりますか?どの製品の「共通フィールド」を表示する必要がありますか? –

+0

これはかなり抽象的です。一般的なフィールドは、クエリがそれらのためにフィルタリングされているためにのみ一般的です(設計に関連する「Product」のセマンティクスについて心配しないでください)。 –

答えて

1

集計データに基づいてCategoryIdをグループ化して新しい製品を作成したいと思うようです。例えば。 (私のVBがひどい場合は申し訳ありません):

From product In db.Products _ 
Group By CategoryID = product.CategoryID Into Group _ 
Select New Product With _ 
    CategoryID = CategoryID, _ 
    QuantityA = Group.Select(Function(p) p.QuantityA).Sum(), _ 
    QuantityB = Group.Select(Function(p) p.QuantityB).Sum() 
+0

うん、これだった、ありがとう!私はそれがむしろ抽象的な質問であったことを知っています。私はVB.net/Linqのグループ構文を混乱させています。 –

関連する問題