Ich arbeite mit einer Datentabelle, die einige Zeilen als eine Art Sicherung kopiert hat. Ich versuche, Daten herauszufiltern, die kopiert wurden, aber ich habe Probleme, weil ich nach einem Spaltenpaar filtern muss. Jede Zeile hat einen Namen und ein Datum, ein Flag für wenn es eine Kopie ist oder ein paar andere Dinge (hat mehr als nur zwei Werte, aber das sind die, an denen ich interessiert bin) und einige andere Informationen. Ich versuche, alle Zeilen zu erhalten, die als Backups nicht angezeigt werden, so zum Beispiel:C# SQL-Filter für ein Wertepaar?
ABC 1/1/2001 dataSet ... | ABC 1/1/2001 backupSet ...
DEF 2/2/2002 dataSet ... | DEF 2/2/2002 backupSet ...
GHI 3/3/2003 dataSet ... | ABC 4/4/2004 backupSet ...
ABC 4/4/2004 dataSet ... |
DEF 5/5/2005 dataSet ... |
ABC 6/6/2006 dataSet ... |
ergäbe in:
GHI 3/3/2003 dataSet ...
DEF 5/5/2005 dataSet ...
ABC 6/6/2006 dataSet ...
ich auf einer Spalte filtern kann, aber ich weiß nicht wissen wie beides gleichzeitig geht.
var result = from a in db.table
where a.type == "dataSet"
let backupData = (from b in db.table where b.type == "backupSet" select b.name)
where !backupData.Contains(a.type)
select new DataObject
{
...
};
Ist so weit wie ich habe.
Ich versuche auch, es zu nur einer Abfrage zu behalten, da die Ergebnismenge möglicherweise ziemlich groß sein könnte, also wollte ich nicht einfach ein Paar Sammlungen im Speicher erstellen und dann versuchen, sie herauszufiltern. Ist das möglich? Noch etwas unerfahren bei SQL, wird jede Hilfe geschätzt.
Das funktionierte, danke. – user1267983