【发布时间】:2016-10-08 01:22:34
【问题描述】:
我已经在这个问题上敲了大约 2 天了。
我有一个非常高级的 SQL Server 查询,需要将其转换为 LINQ。
涉及到:
- 6 个内部连接
- 包含每个表中的列的选择
- 一个特定的 groupby,它涉及每个表中的大量列。
我还需要能够动态构建 where 子句谓词(使用 predicatebuilder),所以如果我想在正确的位置应用 where 子句,我想我需要使用 lambda 表达式(经过多次试验和错误)。
这是我很难翻译的部分:
var query = from order in orders
join customer in customers on order.CustomerID equals customer.ID
join ordersection in ordersections on order.ID equals ordersection.OrderID
join ticket in tickets on ordersection.ID equals ticket.OrderSectionID
join evt in events on ticket.EventID equals evt.id
join client in clients on evt.ClientID equals client.id
join venue in venues on evt.VenueID equals venue.VenueID
非常感谢您抽出宝贵时间(提前)!
【问题讨论】:
-
当前使用
Joins发布的查询是否有效,或者您也需要解决方案 -
这里没有实际问题。这只是一堆陈述。你应该阅读How to Ask。我们需要有一些具体的工作和一个明确的问题要解决。
-
@Enigmativity,确实花在理解问题上的时间比设计解决方案要多
-
不确定您是否拥有数据库。最好将此查询实现为视图并在 LINQ 中从该视图进行查询。在这种情况下,SQL 查询比 LINQ 更易于维护。
-
您展示的内容不需要翻译成 LINQ。它是 LINQ。它是最适合连接的语法——查询语法。如果这是您的问题,那么将其转换为更笨重的方法语法是没有意义的。让编译器为你做这件事。那么,在翻译方面,您的问题到底是什么?至于构建动态 where 子句,请查找“谓词生成器 + LINQ”并从众多热门中挑选。
标签: c# sql-server linq join lambda