2017-10-25 16 views
0

テーブルAの列IsCheckedが真であるテーブルBの(量*値)の合計を選択するためにラムダを使用しようとしています。親テーブルの列に基づく子テーブルの合計列

表A

A_ID(INT)主キー
にisChecked(ブール)

表B
B_ID(INT)に
A_ID(INT)Foregin KEY表A
数量(Int)
01あなたが戻ってTable Bからナビゲーションプロパティを持っているので

SELECT SUM(Value * QUANTITY) FROM TableB JOIN TableA ON TableA.A_ID = TableB.A_ID WHERE TableA.IsChecked = 'true' 
+0

なぜ「インクルード」を使用していますか?あなたはどこで使っていますか? 'TableA'と' TableB'の間に 'navigation 'はありますか? –

+1

'Table B'から' Table A'に戻るナビゲーションプロパティはありますか?これにより、 '_context.TableB.Include(i => i.TableA).Where(w => w.TableA.IsChecked).Sum(s => s.Price * s.Quantity)' –

+0

@BrendanGreenはい"A_ID"の列を参照してください。私はそれをより明確にするために編集する。 – Reafidy

答えて

1

:値(INT)

私の価値のない試みが(すみません、その私の知識を越えて):

_context.TableA.Where(i => i.IsChecked == True).Include(i => i.TableB).Sum(i => i.Price * i.Quantity)) 

これは、SQLクエリですTable Aの場合はTable Bから次のように開始できます。

_context.TableB 
    .Include(i => i.TableA) 
    .Where(w => w.TableA.IsChecked) 
    .Sum(s => s.Price * s.Quantity) 

Table BA_IDがヌルであるかどうかを確認することはできません。

+0

うまく動く、ありがとう。私がモデルに戻ったら、navプロパティであなたが意味するものを得ました。 – Reafidy

関連する問題