【问题标题】:linq count with join on multiple tables连接多个表的 linq 计数
【发布时间】:2010-10-11 00:16:18
【问题描述】:

假设我有 3 张桌子:购物车、篮子和鸡蛋,其中一个篮子可以包含许多鸡蛋,而购物车可以包含许多篮子。每个篮子都有一个映射到购物车的外键,每个鸡蛋都有一个映射到篮子的外键。

我需要返回一个包含这些列的表:

-购物车名称 - 购物车中的篮子数量 - 购物车中的鸡蛋数量。

每个表都是一个 EF,我正在使用 linq。它是连接和计数的组合,我在绕圈子。

感谢您的帮助。

【问题讨论】:

    标签: entity-framework join linq-to-entities count


    【解决方案1】:

    我自己是一个 LINQ-to-SQL 人,但我相信 EF 会自动生成一对多属性作为 IEnumerables,所以这应该适合你:

    from cart in Carts
    select new
    {
        CartName = cart.Name,
        BasketCount = cart.Baskets.Count(),
        EggCount = cart.Baskets.SelectMany(b => b.Eggs).Count()
    }
    

    【讨论】:

    • 是的,只要他的 EDMX 中有导航属性,这将起作用。否则他将不得不明确加入 FK。
    • 我正在使用 EF,例如我可以编写 (VB) dim myResult = from carts in myEntities.Cart;如果这澄清了 RPM1984 的评论。
    • 这与 LINQ to SQL 配合得非常好,而且在性能方面也非常快。哇,通过切换到这种方法,您为我节省了一些麻烦,并使我的页面速度提高了大约十倍。 LINQ 必须在幕后很好地优化这一点,因为我有大量数据在使用此方法后立即以正确的计数出现。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多