En primer lugar, necesito obtener todos los datos de ODBC (esto ya está funcionando).
Luego viene la parte más complicada de la que todavía no estoy seguro de cómo se puede hacer. Hay dos tablas de datos en ODBC. Los estoy fusionando con mi código actual y los estoy filtrando con ciertos parámetros.
Tabla 1 en la base de datos:
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
Tabla 2 en la base de datos:
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 combinado se ve así:
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
Sin embargo, la tabla de datos de salida combinada debería tener este aspecto (para tener la posibilidad de trabajar más con ella):
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
Encuentra duplicados en NAME
. Deje solo uno de ellos, asigne un número de la Tabla 1 a la NRO
Tabla 2 a NRO1
. Los números de la tabla 1 deben estar NRO
, los números de la tabla 2 deben estar adentro NRO1
.
Después de conectarme a ODBC, estoy llenando una tabla con datos de la Tabla 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);
}
entonces obtengo datos de otra Tabla 2 y los fusiono de la siguiente manera:
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);
}
Después de eso, estoy realizando el filtrado (necesito tener filas que solo comiencen con 4 y 1 NRO
, también hay filas con otro número de inicio):
DataTable results = dataTable.Select("ACTIVE = '1' AND (NRO Like '1%' OR NRO Like '4%')").CopyToDataTable();
Luego agrego una columna más para NRO1
(esto también agrega ceros (0) No los necesito en la columna 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
}
Puedo atrapar duplicados con este código
var duplicates = results.AsEnumerable().GroupBy(r => r[2]).Where(gr => gr.Count() > 1);
pero como realizar el resto? ¿Esto debería realizarse mediante un ciclo con la construcción de una nueva tabla? ¿Cómo puedo unir y eliminar duplicados dataTable
?
NAME
. Si hay más de dos: error (controlador de errores). 2. Hubo un error en mi ejemplo, lo he solucionado ahora. Gracias por mencionar este, es importante.
dataTable
contener más de dos duplicados para algún nombre? Por ejemplo, ¿es posible existir tres duplicados para BMW? 2. ¿Cómo podemos definir cuál de los registros duplicados mantener y cuáles eliminar? Por ejemplo, podemos mantener un registro con un mínimoNRO
y eliminar el otro registro.