2012-04-09 5 views
2

Ich versuche, eine LINQ 2 SQL in EF 4.0 Abfrage wie folgende SQL-Abfrage zu erstellen.Wie zu implementieren Join mit LINQ und EntityFramework

SELECT * FROM Role 
LEFT JOIN Queue 
ON Role.RoleId = Queue.RoleId 
WHERE QueueId = 361 

Also wie könnte ich das in EF 4.0 tun?

+1

Sie meinen Linq; nicht Linq zu Sql. –

+0

@AndrewBarber: Nein, ich bin ziemlich sicher, dass er LINQ to SQL meinte. Oder genauer LINQ zu Entitäten, da er gegen EF mappt. Siehe hier: http://msdn.microsoft.com/en-us/library/bb386964.aspx –

+2

@Mike LINQ zu SQL ist ein völlig anderes Produkt von EF. Es wäre so, als würde er sagen, dass er über nHibernate sprach. –

Antwort

4

Normalerweise wird diese Eigenschaften mit Hilfe Navigation durchgeführt, die geladen werden, wenn Sie an das Unternehmen zu erhalten, jedoch können Sie dies auch mit den folgenden:

from r in Roles 
from q in Queues 
where r.RoleId == q.RoleId 
where q.QueueId == 361 
select new { r.RoleId, q.QueueId /*other bits you want*/} 
+0

Hallo. Wenn ich mehrere Tabellen habe, funktioniert das? – Ali

+0

@Ali sicher, * von * gibt eine Datenquelle an, die für die Abfrage in linq verfügbar ist. Dies ähnelt dem Konzept eines JOIN innerhalb von SQL selbst, und wenn die linq-Abfrage in SQL übersetzt wird, wird dies zu einem SQL-JOIN. Ich mag mehrere * von * 's in einer Abfrage anstelle einer * join * Anweisung, da es viel besser lesbar ist –

+0

danke für Ihre help.its Arbeit für mich. – Ali

3

versuchen nach dem ich hoffe, dass es

hilft

ich würde empfehlen, mehr über Joins zu suchen

var result=(from p in Roles 
join pa in Queue on p.RoleId equals pa.RoleId into temproles 
from addresses in temproles.DefaultIfEmpty() where temproles.queueId = 361 
select new { p, pa});