vb.net - linq 结合 2 个查询

标签 vb.net linq

假设我有 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/

相关文章:

xml - 如何返回动态 XML 文件以在 VB.net 中使用

vb.net - 如何卸载 VB.NET 中所有打开的表单?

c# - 如何在 C# 中使用 Linq 对 OrderedDictionary 进行排序(使用 .NET 3.5)?

c# - LINQ to SQL 查询未返回正确的日期时间

linq - LINQ查询问题

c# - LINQ 多列表连接

vb.net - Visual Studio 自定义控件错误的 AddHandler

regex - VB.Net 验证 : Checking if Text Contains Only Letters

c# - 如果 XElement 上不存在 XAttribute 默认值

asp.net - 为什么这个程序没有进入我的 ElseIf 语句——System.DBNull