4

私は次のlinqを持っています -

var quantity = (from p in context.StoreInventory
                         where p.BookId== BookId
                                && p.StoreAddress == StoreAddress
                         select p).Sum(i => i.Quantity);

エラーが発生しています -

メソッド「Sum」はサポートされていません

理由と必要な変更を誰か教えてください。

4

2 に答える 2

11
var quantity = (from p in context.StoreInventory
                         where p.BookId== BookId
                                && p.StoreAddress == StoreAddress
                         select p.Quantity).Sum();

これは機能するはずです-合計は、ステートメント'Quality'を使用して取得された列で実行されます。selectこれSum(expression)は、LINQ to Entities ではサポートされていませんが、標準Sum()はサポートされているためです。

すべての作業はデータベースによって行われる必要があるため、アプリケーションによって行が取得されることはなく、単一の番号のみが取得されます。

于 2013-01-08T09:09:04.410 に答える
3

Sum を呼び出してクエリをコレクションに変換する前に、Enumerable.ToListを使用します。

var quantity = (from p in context.StoreInventory
                         where p.BookId== BookId
                                && p.StoreAddress == StoreAddress
                         select p).ToList().Sum(i => i.Quantity);

編集:これにより、すべての行が取得され、効率的な方法ではない合計が適用されます。数量を合計する必要があるため、行の代わりに数量を選択できます。

var quantity = (from p in context.StoreInventory
                         where p.BookId== BookId
                                && p.StoreAddress == StoreAddress
                         select p.Quantity).Sum();
于 2013-01-08T09:05:35.653 に答える