Where-Klausel für die Sammlung

Ich bin mit dem BAGA-code von Julie Lerman DbContext-Buch. Ich will erstellen Sie die folgende SQL-Abfrage in LINQ und setzen die Ergebnisse in eine Liste von Sammlungen und habe Probleme.
http://learnentityframework.com/downloads/

SELECT * FROM baga.Locations d
LEFT JOIN Lodgings l ON d.LocationID = l.destination_id
WHERE d.Country = 'usa'
AND (l.MilesFromNearestAirport > 5 or l.MilesFromNearestAirport is null)

So, in Englisch, bekommen alle Standorte (Ziele) , sind in den USA und beinhalten alle dazugehörigen Pension, wo MilesFromNearestAirport > 5

Die syntax nicht kompilieren, aber ich hatte gehofft, für etwas ähnliches wie das unten

var dests = context.Destinations
  .Where(d => d.Country == "USA" && d.Lodgings.Where(l => l.MilesFromNearestAirport > 5))
  .Select(d => d)
  .ToList();

Irgendwelche Ideen?

Die Option ist gültig.
Der Ansatz ist falsch, weil der left join. Müssen Sie etwas tun, wie: .Where(d => d....Country == "USA" && (d....Unterkünfte.Count == 0 || d....Unterkünfte.Jede(l => l.MilesFromNearestAirport == null || l.MilesFromNearestAirport > 5)) Diese abrufen sollen, die richtigen Standorte. Beim Zugriff auf die Unterkünfte, die jeweils den gleichen Ausdruck in den Unterkünften where-Klausel müssen verwendet werden, um die geltenden Unterkünfte. Soweit ich weiß, entity framework unterstützt nur den inner join. Auf einer anderen Anmerkung, diese Abfrage wäre ziemlich einfach in nhibernate.
Keine dieser Lösungen arbeiten. Shelakel, haben Sie NHibernate viel? Würde dir empfehlen es über EF?
Einfach nur neugierig...warum tun Sie müssen .Wählen Sie(d => d) hier. Wenn Sie diese entfernen, es ist nur ein einfacher lambda-Ausdruck und funktionieren könnte. Noch ein kurzer f: Es hängt von persönlichen Vorlieben, aber man könnte schließen Sie die Klammern am && Teil und ersetzen Sie das && mit anderen .Where(...).
Seine eine Weile her, seit ich dieses schrieb, aber mein ursprünglicher code hat nicht funktioniert und ich war nur zu lernen, Linq, also bitte ignorieren! Wahrscheinlich würde ich nun eine Art von groupjoin mit einer where-Klausel für null & > 5. Das original Auswählen(d => d) scheint ziemlich sinnlos von mir 😉

InformationsquelleAutor orangesherbert | 2012-12-16

Schreibe einen Kommentar