Laden...

Linq Join Inner Join als lambda Ausdruck

Erstellt von Taucher vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.190 Views
T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 9 Jahren
Linq Join Inner Join als lambda Ausdruck

verwendetes Datenbanksystem: SqlServer 2008
Hallo Gemeinde,
ich brauche mal bitte Hilfe um eine Sql-Abfrage in linq umzusetzen.
Hier die Sql-Abfrage:


Select * From TB_TattooStudio as ts
	Inner Join TB_Address as a
		On ts.AddressId = a.AddressId
	Left Outer Join TB_City as c
		On a.CityId = c.CityId

Hier mein Versuch wo ich nicht weiter komme:


context.TB_TattooStudio
                        .Join
                        (
                            context.TB_Address
                            , ts => ts.AddressId
                            , a => a.AddressId
                            , (ts, a) => TattooStudio.Create(ts.TattooStudioId, ts.Name, ts.Manager, ts.ContactId, ts.IsTattooStudio, ts.IsPiercingStudio, ts.IsLocked, ts.IsDeleted, ts.AddressId)
                        )
                        .GroupJoin
                        (
                            context.TB_City
                            , temp => temp
                            , c => c
                            , (c, temp) => new { city = c, ts = temp }
                        )
                        .ToArray();

Hier die Datenbankstruktur:
TB_TattooStudio
AddressId
...

TB_Address
AddressId
CityId
...

TB_City
CityId
...

Ich hoffe die Informationen reichen aus.

16.842 Beiträge seit 2008
vor 9 Jahren

Ich empfehl Dir, sowas nicht in Lambda auszudrücken.
Lambda ist bei vielen Fällen zwar die übersichtlichere Variante; bei Verschachtelungen und Join meiner Meinung nach aber nicht.

Nimm einfach den normalen SQL Syntax für Linq in diesem Fall.
Einführung in LINQ-Abfragen (C#)

PS: Eigenschaften eines Objekts ( ts.IsTattooStudio, ts.IsPiercingStudio, ) ist per Enum übrigens deutlich einfacher in der Erweiterbarkeit 😉

T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 9 Jahren

Hallo Abt und danke für die Antwort.
Wie sich herausgestellt hat war mein Problem ganz einfach umzusetzen, es lag schlicht weg daran dass ich zu wenig mit linq gemacht habe, so dass ich vergessen hatte das ich ohne joins auf die Beziehungstabellen zugreifen kann... Aber jetzt weiß ichs ja und merke mir das auch 😉