将t-sql查询转换为LINQ(左连接与子查询/嵌套右连接)

时间:2011-12-15 11:44:27

标签: c# .net sql tsql linq-to-sql

以下是我设法写的查询:

select *
from [Transaction] as t left join (ProductTransaction as pt right join Product as p on pt.productId = p.productId) on t.transactionId = pt.transactionId
                    left join (ReservationTransaction as rt right join Reservations as r on rt.reservationId = r.reservationId) on t.transactionId = rt.transactionId

到目前为止,我已经得到了这样的东西(没有嵌套的右连接),而且我被卡住了。任何人都可以帮助我使用这些子查询/嵌套连接吗?

from t in dataContext.Transactions
                join pt in dataContext.ProductTransactions on t.transakcja_id equals pt.transactionId into pTransactions
                from pt in pTransactions.DefaultIfEmpty()
                join rt in dataContext.ReservationTransactions on t.transakcja_id equals rt.transactionId into rTransactions
                from rt in rTransactions.DefaultIfEmpty()

编辑: 好的,谢谢你的提示。我想要做的是将〜5个相关的(它们与外键相关联)组合成一个表。案件是我需要所有交易但不是每个交易都与产品或预订相关联。所以我不确定我是否能够使用简单的关联属性获得所有这些属性,并且查询比我或者更多的查询?也许我应该使用多个查询并解决我的问题?

我上传了我正在进行的网络计划截图。提前感谢您的建议。 part of db scheme< - 无法在stackoverflow上传我的低信誉点

1 个答案:

答案 0 :(得分:1)

在数据库中设置外键,你不需要连接,你将访问具有关联属性的链接表(只是一个例子):

  

var transation = dataContact.Transations.First();

     

var price = transaction.ProductTransaction.Product.Price;