过滤数据表以获取多个值

时间:2012-03-08 04:05:37

标签: c# linq datatable rowfilter

我有2个数据表objdatatable1和objdatatable2。

我需要过滤objdatatable2中的数据,以便objdatatable2中的market_id不应该在objdatatable1中。

我甚至打开linq,它会过滤不在子句

中的联系人

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

这会复制到DataTable dt来自objectdatatable2的所有行,这些行在'market_id'字段中的值不会出现在objectdatatable1中的同名字段中。在此修改中,“market_id”字段在string中的objectdatatable2类型和int中的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();
}