子表中的总和列基于父表中的列

时间:2017-10-25 03:49:10

标签: c# sql linq lambda

我正在尝试使用lambda来选择表B中(数量*值)的总和,其中表A中的列IsChecked为真。

表A

A_ID(Int)主键
IsChecked(布尔)

表B
B_ID(Int)
A_ID(Int)表A的Foregin KEY
数量(Int)
价值(国际)

我毫无价值的尝试(对不起,我不知道):

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

这是sql查询:

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

1 个答案:

答案 0 :(得分:1)

由于您的导航属性从Table B返回Table A,因此您可以从Table B开始,如下所示:

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

请注意,上述内容不会检查A_ID中的Table B是否为空。