【问题标题】:What is the linq equivalent of this nested left join?这个嵌套左连接的 linq 等价物是什么?
【发布时间】:2012-11-24 14:24:04
【问题描述】:

下面嵌套左连接的 linq 等效项是什么?

SELECT y.YazilimciId, y.AdSoyad, u.UygulamaId, y.KullaniciAdi, y.IsTel, y.CepTel, y.Eposta, k.KurumAdi
FROM Yazilimcilar y,
     UygulamaYazilimci uy,
     Uygulamalar u
        left outer join
            (
                UygulamaKurum uk
                    left outer join  Kurumlar k on uk.KurumId = k.KurumId
            ) on u.UygulamaId = uk.UygulamaId

WHERE y.YazilimciId = uy.YazilimciId
AND   uy.UygulamaId = u.UygulamaId
AND   u.UygulamaId = '19EA3A29-40FF-45FF-B289-03885FDC9BFC'

【问题讨论】:

  • 您是否正在寻找LINQ converter? 的 SQL :-)
  • 我用过Linqer,无法制作。

标签: sql linq


【解决方案1】:

为什么需要嵌套连接?实际上,我以前从未见过这样的语法,而且我不确定它是否会起作用,无论如何,在 MS SQL Server 上不会。您可以将查询编写为

SELECT y.YazilimciId, y.AdSoyad, u.UygulamaId, y.KullaniciAdi, y.IsTel, y.CepTel, y.Eposta, k.KurumAdi
FROM Yazilimcilar y,
     UygulamaYazilimci uy,
     Uygulamalar u
    left outer join UygulamaKurum uk on u.UygulamaId = uk.UygulamaId
    left outer join Kurumlar k on uk.KurumId = k.KurumId
WHERE y.YazilimciId = uy.YazilimciId
AND   uy.UygulamaId = u.UygulamaId
AND   u.UygulamaId = '19EA3A29-40FF-45FF-B289-03885FDC9BFC'

我还可以建议用正确的连接语法重写所有连接

SELECT y.YazilimciId, y.AdSoyad, u.UygulamaId, y.KullaniciAdi, y.IsTel, y.CepTel, y.Eposta, k.KurumAdi
FROM Uygulamalar u
    inner join UygulamaYazilimci uy on uy.UygulamaId = u.UygulamaId
    inner join Yazilimcilar y on y.YazilimciId = uy.YazilimciId
    left outer join UygulamaKurum uk on u.UygulamaId = uk.UygulamaId
    left outer join Kurumlar k on uk.KurumId = k.KurumId
WHERE u.UygulamaId = '19EA3A29-40FF-45FF-B289-03885FDC9BFC'

现在您可以轻松编写 LINQ :)

【讨论】:

  • 嗯,有趣;我的 sql 也适用于 ms sql server,但你的更好,更容易转换。我很感激。
  • 我已经测试过了,是的,嵌套语法可以工作。但我想不出我为什么要使用这种语法——它更难阅读,而且我看不到它带来的任何好处。
猜你喜欢
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 2010-11-16
  • 2012-03-22
相关资源
最近更新 更多