Pertama saya harus mendapatkan semua data dari ODBC (ini sudah berfungsi).
Kemudian muncul bagian yang paling rumit yang saya belum yakin bagaimana hal itu bisa dilakukan. Ada dua tabel data di ODBC. Saya menggabungkannya dengan kode saya saat ini dan memfilternya dengan parameter tertentu.
Tabel 1 dalam database:
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
Tabel 2 dalam database:
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
DataTable gabungan terlihat seperti ini:
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
Namun data output gabungan digabung akan terlihat seperti ini (untuk memiliki kemungkinan untuk bekerja dengannya lebih lanjut):
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
Temukan duplikat di NAME
. Sisakan satu saja, tetapkan nomor dari Tabel 1 hingga NRO
dari Tabel 2 hingga NRO1
. Tabel 1 angka harus dalam NRO
, tabel 2 nomor harus dalam NRO1
.
Setelah terhubung ke ODBC saya mengisi satu tabel dengan data dari Tabel 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);
}
maka saya mendapatkan data dari Tabel 2 lain dan menggabungkannya dengan:
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);
}
Setelah itu saya melakukan pemfilteran (saya harus memiliki baris yang hanya dimulai dengan 4 dan 1 NRO
, ada juga baris dengan nomor awal lainnya):
DataTable results = dataTable.Select("ACTIVE = '1' AND (NRO Like '1%' OR NRO Like '4%')").CopyToDataTable();
Lalu saya menambahkan satu Kolom lagi untuk NRO1
(ini juga menambahkan nol (0) Saya tidak membutuhkannya di Kolom 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
}
Saya dapat menangkap duplikat dengan kode ini
var duplicates = results.AsEnumerable().GroupBy(r => r[2]).Where(gr => gr.Count() > 1);
tetapi bagaimana melakukan sisanya? Ini harus dilakukan oleh lingkaran dengan membangun tabel baru? Bagaimana saya dapat melakukan bergabung dan menghapus duplikat dataTable
?
NAME
. Jika lebih dari dua - kesalahan (penangan kesalahan). 2. Ada kesalahan dalam contoh saya, saya telah memperbaikinya sekarang. Terima kasih telah menyebutkan yang ini, ini penting.
dataTable
berisi lebih dari dua duplikat untuk beberapa nama? Misalnya, apakah mungkin ada tiga duplikat untuk BMW? 2. Bagaimana kita bisa menentukan catatan duplikat mana yang akan disimpan, dan mana yang akan dihapus? Misalnya, kita dapat menyimpan catatan dengan minimumNRO
dan menghapus catatan lainnya.