Filtragem de dados de tabela para vários valores
Pergunta
Eu tenho 2 tabelas objdatatable1 e objdatatable2 .
Eu preciso filtrar os dados no objdatatable2 tais que market_id em objdatatable2 não deve ser em objdatatable1.
Eu sou mesmo para abrir a linq que vai filtrar os contatos não na cláusula
Solução
Este cópias para DataTable dt
todas as linhas de objectdatatable2
que tenham valores da 'market_id' campo que não aparecem em um campo de mesmo nome na objectdatatable1
.Nesta edição do 'market_id' campo é do tipo string
no objectdatatable2
e do tipo int
no 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();
}
Outras dicas
objdatatable2.AsEnumerable().SkipWhile(dr2 => { return objdatatable1.AsEnumerable().Any(dr1 => { return (dr1.Field<String>("market_id ") == dr2.Field<String>("market_id ")); }) });
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow