我正在使用VB.net,实体框架6和sql server 2008R2,我需要帮助创建一个查询。 我有一个表:MyTable1有这样的结构:
ID.....group.........vl1
1........1...........7
2........1...........8
3........1...........3
4........2...........2
5........2...........4
我想只选择那些组的vl1总值超过10的行。 对于上面的例子,我们有:
Group=1 Vl1 ( total) = 7+8+3=18
Group=2 Vl1 ( total) = 2+4=6
因此组1的值超过10,因此应选择具有组= 1的所有行。 group2的值为6,因此不应选择具有group = 2的所有行。
如何构建此类查询?
谢谢!
编辑: 我尝试这个查询但是没有工作:
Dim query as IEnumerable (OF MyTable)
Query = From t In context.MyTables
Group By t.group Into Group
Select Group Where Group.Sum(Function(t2) t2.vl1) > 10
答案 0 :(得分:0)
我认为你想要这样的东西,虽然可能有更好的方法来构建它:
Dim query =
From t In context.MyTables
Group By t.group Into g = Group
Where g.Sum(Function(x) x.vl1) > 10
From t2 In g
Select t2
From t2 in g Select t2
部分正在为满足SelectMany
子句的每个组执行Where
。