Ich schreibe eine LINQ to SQL-Anweisung und bin nach der Standardsyntax für einen normalen inneren Join mit einer ON
Klausel in C #.
Wie stellen Sie Folgendes in LINQ to SQL dar:
select DealerContact.*
from Dealer
inner join DealerContact on Dealer.DealerID = DealerContact.DealerID
Antworten:
Es geht ungefähr so:
Es wäre schön, vernünftige Namen und Felder für Ihre Tabellen zu haben, um ein besseres Beispiel zu erhalten. :) :)
Aktualisieren
Ich denke, für Ihre Anfrage könnte dies angemessener sein:
Da suchen Sie die Kontakte, nicht die Händler.
quelle
from c or from t1
Und weil ich die Syntax der Ausdruckskette bevorzuge, machen Sie das folgendermaßen:
quelle
So erweitern Sie die Antwort der Ausdruckskettensyntax von Clever Human:
Wenn Sie Dinge (wie Filtern oder Auswählen) für Felder aus beiden Tabellen tun möchten, die zusammengefügt werden sollen - statt nur für eine dieser beiden Tabellen -, können Sie ein neues Objekt im Lambda-Ausdruck des letzten Parameters für die Join-Methode erstellen Einbeziehen dieser beiden Tabellen, zum Beispiel:
Der interessante Teil ist der Lambda-Ausdruck in Zeile 4 dieses Beispiels:
... wo wir ein neues Objekt vom anonymen Typ erstellen, dessen Eigenschaften die DealerContact- und Dealer-Datensätze sowie alle ihre Felder sind.
Wir können dann Felder aus diesen Datensätzen verwenden, während wir die Ergebnisse filtern und auswählen, wie der Rest des Beispiels zeigt, das
dc_d
als Namen für das von uns erstellte anonyme Objekt verwendet wird, dessen Eigenschaften sowohl die DealerContact- als auch die Dealer-Datensätze enthalten.quelle
quelle
ContactStatus
wirklich eine Aufzählung ist undc.StatusID
nicht wirklich eine ID, sondern der numerische Wert der Aufzählung. Wenn ich recht habe,(ContactStatus)c.StatusID
wird wirklich nur eine ganze Zahl in eine Aufzählung umgewandelt.Verwenden Sie den Linq Join- Operator:
quelle
Sie erstellen einen Fremdschlüssel und LINQ-to-SQL erstellt Navigationseigenschaften für Sie. Jeder
Dealer
hat dann eine Sammlung,DealerContacts
die Sie auswählen, filtern und bearbeiten können.oder
Wenn Sie keine Navigationseigenschaften verwenden, verpassen Sie einen der Hauptvorteile von LINQ-to-SQL - den Teil, der das Objektdiagramm abbildet.
quelle
Grundsätzlich bietet der LINQ- Join- Operator keinen Vorteil für SQL. Dh die folgende Abfrage
führt zu INNER JOIN in SQL
join ist nützlich für IEnumerable <>, weil es effizienter ist:
Die Klausel würde für jeden Händler erneut ausgeführt. Für IQueryable <> ist dies jedoch nicht der Fall. Auch Join ist weniger flexibel.
quelle
Tatsächlich ist es oft besser, sich nicht an linq zu beteiligen. Wenn es Navigationseigenschaften gibt, ist eine sehr prägnante Methode zum Schreiben Ihrer linq-Anweisung:
Es übersetzt in eine where-Klausel:
quelle
SelectMany()
.Verwenden Sie LINQ-Joins , um Inner Join durchzuführen.
quelle
Versuche dies :
quelle
quelle
Wo Schüler- und Kurstabellen eine Primärschlüssel- und eine Fremdschlüsselbeziehung haben
quelle
versuchen Sie stattdessen dies,
quelle
quelle
quelle
Schreiben Sie die gewünschten Tabellennamen und initialisieren Sie die Auswahl, um das Ergebnis der Felder zu erhalten.
quelle
Inner Join zwei Tabellen in Linq C #
quelle
von d1 in DealerContrac Join d2 in DealerContrac auf d1.dealearid entspricht d2.dealerid select new {dealercontract. *}
quelle
Ein bestes Beispiel
Tabellennamen:
TBL_Emp
undTBL_Dep
quelle