luoyi108 2015-04-09 02:27 采纳率: 0%
浏览 862

sql 转 linq, join group by 一起用的问题

SELECT o.OrderType, o.InsCompanyID, o.CorpCompanyID, item.ContractorID, COUNT(o.ID) FROM MobileOrder o
INNER JOIN MobileOrderServiceItem item ON o.ID=item.MobileOrderID
GROUP BY o.OrderType, o.InsCompanyID, o.CorpCompanyID, item.ContractorID
把这个转成 linq怎么写

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 15:54
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    可以使用 LINQ 的 GroupJoin 方法来实现。以下是一个示例:

    var result = from o in db.MobileOrders
                 join item in db.MobileOrderServiceItems on o.Id equals item.MobileOrderId into g
                 from g in g.DefaultIfEmpty()
                 group g by new { o.OrderType, o.InsCompanyID, o.CorpCompanyID, item.ContractorID } into g1
                 select new { OrderType = g1.Key.OrderType, InsCompanyID = g1.Key.InsCompanyID, CorpCompanyID = g1.Key.CorpCompanyID, ContractorID = g1.Key.ContractorID, Count = g.Count() };
    

    在这个例子中,我们首先从 MobileOrdersMobileOrderServiceItems 中获取一组记录,并将这些记录放入一个 g 对象的集合中。然后,我们将每个组按照键(即订单类型、保险公司和公司ID)进行分组。最后,我们返回一个新的 Result 类型对象,其中包含每种组合的订单数量。

    注意:在实际应用中,你需要根据你的数据库模式调整上述代码。例如,如果你的表结构是不同的,请确保你对查询进行了适当的修改。

    评论

报告相同问题?