Zuerst muss ich alle Daten von ODBC erhalten (dies funktioniert bereits).
Dann kommt der komplizierteste Teil, bei dem ich mir noch nicht sicher bin, wie es gemacht werden kann. In ODBC gibt es zwei Datentabellen. Ich füge sie mit meinem aktuellen Code zusammen und filtere sie mit bestimmten Parametern.
Tabelle 1 in der Datenbank:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
123 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
Tabelle 2 in der Datenbank:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
463 BMW E64 SE0 JR KE OT PG OL J8 9 1
Zusammengeführte Datentabelle sieht folgendermaßen aus:
NRO NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
463 BMW E64 SE0 JR KE OT PG OL J8 9 1
123 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
Die zusammengeführte Ausgabedatentabelle sollte jedoch so aussehen (um die Möglichkeit zu haben, weiter damit zu arbeiten):
NRO NRO1 NAME NAMEA NAMEB ADDRESS POSTA POSTN POSTADR COMPANYN COUNTRY ID ACTIVE
123 423 Fiat Punto 500 J5 K4 O3 P4 O2 JT 1 1
133 Opel Meriva FTG J5 K4 O3 P4 O2 JO 3 1
153 MB E200 C25 JN KI OP PY OR JD 5 1
183 463 BMW E64 SE0 JR KE OT PG OL J8 9 1
103 Audi S6 700 JP KU OU PN OH J6 11 1
Suchen Sie nach Duplikaten in NAME
. Lassen Sie nur einen von ihnen, weisen Sie eine Nummer aus Tabelle 1 bis NRO
Tabelle 2 zu NRO1
. Die Nummern in Tabelle 1 sollten in sein NRO
, die Nummern in Tabelle 2 sollten in sein NRO1
.
Nach dem Herstellen einer Verbindung zu ODBC fülle ich eine Tabelle mit Daten aus Tabelle 1
DataTable dataTable = new DataTable("COMPANY");
using (OdbcConnection dbConnectionSE = new OdbcConnection(connectionStringSE))
{
dbConnectionSE.Open();
OdbcDataAdapter dadapterSE = new OdbcDataAdapter();
dadapterSE.SelectCommand = new OdbcCommand(queryStringSE, dbConnectionSE);
dadapterSE.Fill(dataTable);
}
dann erhalte ich Daten aus einer anderen Tabelle 2 und füge sie zusammen durch:
using (OdbcConnection dbConnectionFI = new OdbcConnection(connectionStringFI))
{
dbConnectionFI.Open();
OdbcDataAdapter dadapterFI = new OdbcDataAdapter();
dadapterFI.SelectCommand = new OdbcCommand(queryStringFI, dbConnectionFI);
var newTable = new DataTable("COMPANY");
dadapterFI.Fill(newTable);
dataTable.Merge(newTable);
}
Danach führe ich eine Filterung durch (ich brauche Zeilen, die nur mit 4 und 1 Zoll beginnen NRO
, es gibt auch Zeilen mit einer anderen Startnummer):
DataTable results = dataTable.Select("ACTIVE = '1' AND (NRO Like '1%' OR NRO Like '4%')").CopyToDataTable();
Dann füge ich eine weitere Spalte hinzu für NRO1
(dies fügt auch Nullen hinzu (0) Ich brauche sie nicht in Spalte NRO1
):
results.Columns.Add("NRO1", typeof(int)).SetOrdinal(1);
foreach (DataRow row in results.Rows)
{
//need to set value to NewColumn column
row["NRO1"] = 0; // or set it to some other value
}
Mit diesem Code kann ich Duplikate fangen
var duplicates = results.AsEnumerable().GroupBy(r => r[2]).Where(gr => gr.Count() > 1);
aber wie soll man den Rest erledigen? Dies sollte durch eine Schleife mit dem Erstellen einer neuen Tabelle durchgeführt werden? Wie kann ich Duplikate verbinden und entfernen dataTable
?
NAME
. Wenn mehr als zwei - Fehler (Fehlerbehandlungsroutine). 2. In meinem Beispiel ist ein Fehler aufgetreten. Ich habe ihn jetzt behoben. Vielen Dank für die Erwähnung dieses, es ist wichtig.
dataTable
für einen Namen mehr als zwei Duplikate enthalten? Ist es beispielsweise möglich, drei Duplikate für BMW zu existieren? 2. Wie können wir definieren, welche der doppelten Datensätze aufbewahrt und welche gelöscht werden sollen? Zum Beispiel können wir Aufzeichnungen mit einem Minimum führenNRO
und die anderen Aufzeichnungen löschen.