C#Left加入Linq无法正常工作

时间:2017-08-03 07:46:29

标签: c# linq

我有一个数据库,其中一些ForeignKeys可以为NULL。所以我选择了左连接数据,就像我在其他一些帖子中找到的一样。

var query =
            from z in context.zeichnungen
            join f in context.fremdschlüssel.DefaultIfEmpty() on z.ZeichnungID equals f.ZeichnungID
            join t in context.tags.DefaultIfEmpty() on f.TagID equals t.TagID into tz
            from t in tz.DefaultIfEmpty()
            join s in context.status.DefaultIfEmpty() on z.StatusID equals s.StatusID into sz
            from s in sz.DefaultIfEmpty()
            join a in context.artikelbezeichnungen.DefaultIfEmpty() on z.ArtikelbezeichnungID equals a.ArtikelbzeichnungID into az
            from a in az.DefaultIfEmpty()
            join b in context.sammellbemerkungen on z.SammelberkungID equals b.SammelbemerkungID
            join m in context.sachmerkmale on z.SachmerkmalID equals m.SachmerkmalID into mz
            from m in mz.DefaultIfEmpty()
            where (zeichnungsnummer == "" || z.Zeichnungsnummer.Contains(zeichnungsnummer)) &&
            (index == "" || index == z.Index) && (tag == "" || t.Tag_Text == tag) &&
            (artikelbezeichnung == "" || artikelbezeichnung == a.Artikelbezeichnung) &&
            (status == "" || status == s.Status_Bezeichnung) && (mmsSachmerkmal == "" || mmsSachmerkmal == m.Sachmerkmal) &&
            (doktyp == "" || doktyp == z.Dokumententyp) && (dateiendung == "" || dateiendung == z.Dateiendung) &&
            (z.Datum >= startDate.Date && z.Datum <= endDate.Date) && (status == "" || status == s.Status_Bezeichnung)
            select new
            {
                f,
                z,
                t,
                s,
                a,
                b,
                m
            };

但是select仅在填充外键时显示数据。有人可以解释我做错了吗?

更新

这是从调试中选择。

  

FROM zeichnungen AS Extent1   INNER JOIN fremdschlüssel AS Extent2 ON Extent1ZeichnungID = Extent2ZeichnungID   INNER JOIN tags AS Extent3 ON Extent2TagID = Extent3TagID   LEFT OUTER JOIN status AS Extent4 ON Extent1StatusID = Extent4StatusID   LEFT OUTER JOIN artikelbezeichnungen AS Extent5 ON Extent1ArtikelbezeichnungID = Extent5ArtikelbzeichnungID   INNER JOIN sammellbemerkungen AS Extent6 ON Extent1SammelberkungID = Extent6SammelbemerkungID   LEFT OUTER JOIN sachmerkmale AS Extent7 ON Extent1SachmerkmalID = Extent7SachmerkmalID

0 个答案:

没有答案