verwendetes Datenbanksystem: EF6 Oracle
Hallo,
ich habe im Moment folgendes Problem:
ich habe eine Liste mit mehreren Instanzen der Klasse Position enthalten (AuftragsNr, Pos, Lfnr)
nun möchte ich zu dieser Liste Daten aus der Datenbank holen, wo die oben gen Properties auch den Primär schlüssel darstellen.
nun geht ja auf sql Basis so etwas:
select * from Table where AuftragsNr,Pos,Lfnr in ((12387123,10, 5),(12387124,11,6),(12323124,12,68))
Kann ich soetwas in linq darstellen? hab schon einige versuche mit where(data => list.Contains(data)) in Verbindung mit anoymen Klassen hinter mir. Mit Linq to Object würde das vllt auch funktionieren.. aber mit Linq to Sql?
Oder hat jemand eine ganz andere herangehensweise?
Die Liste kommt übrigens nicht aus der Datenbank, somit fallen joins beim erstellen der Liste aus.
Im Moment schicke ich für jeden eintrag einen Sql ab, was mir nicht wirklich gefällt.
Grüße
Funktioniert genauso.
var myList = {1, 2, 3};
var query = from item in context.Items
where myList.Contains( item.ID )
select item;
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
stimmt, leider muss ich pro Datensatz 3 Werte vergleichen, nicht nur einen, wie es in deinem Beispiel der Fall ist.
Wenn ich dein Problem richtig verstehe, kannst du es mit einem Join übere mehrere Variablen lösen.
Schau mal hier: MSDN Forum:join on multiple conditions.
Sollte man mal gelesen haben:
Hi,
das würde wahrscheinlich funktionieren, wenn beide Listen im Speicher oder in der Datenbank liegen würden. Leider habe ich die erste im Speicher und die zweite auf der Datenbank.
Ich vermute das funktioniert einfach so nicht, und ich muss einen eigenen Sql schreiben mit dynamsichen erweitern des where Strings + hinzufügen von SqlParametern.
Naja Linq erstell da im entefekt auch nur eine SQL Anweisung die Ausgeführt wird.
Ich würde es einfach mal ausprobieren und mir dann man anschauen welches SQL Statment am Server ausgeführt wird.
Sollte man mal gelesen haben:
ja, stimmt. er baut daraus ein sql.
Aber mein Gedanke war, was soll er auf der db joinen wenn die Liste nicht in der Db ist.
Ich habs aber auch ausprobiert. Er schmeisst zwar keinen Fehler, führt das Sql aber ohne where Bedingung aus.. was bei ein paar Millionen Datensätze recht Fatal ist.
Trotzdem Danke für den Vorschlag.