Pregunta

Tengo 2 tablas de datos objdatatable1 y objdatatable2.

Necesito filtrar los datos en objdatatable2 de modo que market_id en objdatatable2 no deba estar en objdatatable1.

Incluso estoy dispuesto a abrir linq, que filtrará los contactos que no estén en la cláusula.

¿Fue útil?

Solución

Esto se copia en DataTable dt todas las filas de objectdatatable2 que tienen valores en el campo 'market_id' que no aparecen en un campo del mismo nombre en objectdatatable1.En esta edición, el campo 'market_id' es de tipo string en objectdatatable2 y de tipo int en objectdatatable1.

// This creates an empty DataTable with the same structure as objdatatable2.
DataTable dt = objdatatable2.Clone();

var results = objdatatable2.AsEnumerable().Where(r2 => !objdatatable1.AsEnumerable().Any(r1 => (r2.Field<string>("market_id") == r1.Field<int>("market_id").ToString())));
// Copy results to the DataTable only if there are results.
if (results.Count() > 0) {
    dt = results.CopyToDataTable();
}

Otros consejos

objdatatable2.AsEnumerable().SkipWhile(dr2 => { return objdatatable1.AsEnumerable().Any(dr1 => { return (dr1.Field<String>("market_id ") == dr2.Field<String>("market_id ")); }) });

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top