482 Stimmen

Wie lautet die Syntax für eine innere Verknüpfung in LINQ to SQL?

Ich schreibe eine LINQ to SQL-Anweisung, und ich bin nach der Standardsyntax für eine normale innere Verknüpfung mit einer ON Klausel in C#.

Wie stellen Sie das Folgende in LINQ to SQL dar?

select DealerContact.*
from Dealer 
inner join DealerContact on Dealer.DealerID = DealerContact.DealerID

26voto

Kirk Broadhurst Punkte 26286

Sie erstellen einen Fremdschlüssel, und LINQ-to-SQL erstellt Navigationseigenschaften für Sie. Jede Dealer hat dann eine Sammlung von DealerContacts die Sie auswählen, filtern und bearbeiten können.

from contact in dealer.DealerContacts select contact

oder

context.Dealers.Select(d => d.DealerContacts)

Wenn Sie keine Navigationseigenschaften verwenden, verpassen Sie einen der wichtigsten Vorteile von LINQ-to-SQL - den Teil, der den Objektgraphen abbildet.

23voto

the_joric Punkte 11444

Grundsätzlich LINQ beitreten Operator bietet keinen Nutzen für SQL. D.h. die folgende Abfrage

var r = from dealer in db.Dealers
   from contact in db.DealerContact
   where dealer.DealerID == contact.DealerID
   select dealerContact;

führt zu einem INNER JOIN in SQL

beitreten ist für IEnumerable<> nützlich, weil es effizienter ist:

from contact in db.DealerContact  

Klausel würde für jede Händler Bei IQueryable<> ist dies jedoch nicht der Fall. Auch beitreten ist weniger flexibel.

13voto

Gert Arnold Punkte 99327

Eigentlich ist es oft besser, nicht zu verbinden, in linq das heißt. Wenn es Navigationseigenschaften gibt, ist eine sehr prägnante Art, Ihre Linq-Anweisung zu schreiben:

from dealer in db.Dealers
from contact in dealer.DealerContacts
select new { whatever you need from dealer or contact }

Sie entspricht einer Where-Klausel:

SELECT <columns>
FROM Dealer, DealerContact
WHERE Dealer.DealerID = DealerContact.DealerID

6voto

Md Shahriar Punkte 1266

Inner Join zwei Tabellen in linq C#

var result = from q1 in table1
             join q2 in table2
             on q1.Customer_Id equals q2.Customer_Id
             select new { q1.Name, q1.Mobile, q2.Purchase, q2.Dates }

3voto

Uthaiah Punkte 1253

Utilisez LINQ-Verbindungen um den Inner Join durchzuführen.

var employeeInfo = from emp in db.Employees
                   join dept in db.Departments
                   on emp.Eid equals dept.Eid 
                   select new
                   {
                    emp.Ename,
                    dept.Dname,
                    emp.Elocation
                   };

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X