假设我有 3 张 table :购物车、篮子和鸡蛋,其中一个篮子可以包含许多鸡蛋,而购物车可以包含许多篮子。每个篮子都有一个映射到购物车的外键,每个鸡蛋都有一个映射到篮子的外键。
我需要返回一个包含这 3 列的表:
购物车名称 |购物车中的篮子数量 |购物车中的鸡蛋数量。
每个表都是一个 EF,我将 linq 与 VB 结合使用。
到目前为止,我有 2 个查询:一个返回“购物车名称”和“篮子数量”列,另一个返回“购物车名称”和“鸡蛋数量”列。 如何合并这两个结果表,以便在一张表中获得结果?
Dim query1 = (From cart In myEntities.Carts
Where cart.UserID = TheUserID
Join baskets In myEntities.Baskets On baskets.CartID Equals cart.CartID
Select cart.CartName, cart.baskets.Count()).Distinct()
Dim query2 = (From cart In myEntities.Carts
Where cart.UserID = TheUserID
Join baskets In myEntities.Baskets On baskets.CartID Equals cart.CartID
Select cart.CartName, baskets.Eggs.Count()).Distinct()
感谢您的帮助。
最佳答案
下面的查询给出了所需的结果:
from cart in Carts _
select cart.CartName, BasketsInCart = cart.Baskets.Count(), EggsInCart = cart.Baskets.SelectMany(Function(basket)basket.Eggs).Count()
因为 cart.Baskets 是一个 Ienumerable(of Baskets)
,所以 SelectMany运算符可用于从所有篮子中取出所有鸡蛋。
关于vb.net - linq 结合 2 个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3903672/