我有2个数据表objdatatable1和objdatatable2。为多个值筛选数据表
我需要过滤objdatatable2中的数据,以便objdatatable2中的market_id不应位于objdatatable1中。
我甚至开到LINQ将在条款过滤的不接触
我有2个数据表objdatatable1和objdatatable2。为多个值筛选数据表
我需要过滤objdatatable2中的数据,以便objdatatable2中的market_id不应位于objdatatable1中。
我甚至开到LINQ将在条款过滤的不接触
这从objectdatatable2
拷贝到数据表dt
所有行具有在“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();
}
这个过滤器。但我怎样才能转换回数据表。 .CopyToDataTable()告诉“指定的转换无效”。 – 2012-03-08 04:54:01
@KuntadyNithesh在这种情况下,请调用[CopyToDataTable()](http://msdn.microsoft.com/zh-cn/library/system.data.datatableextensions.copytodatatable.aspx)。我更新了我的答案。 – 2012-03-08 05:07:13
.CopyToDataTable()告诉“指定的转换无效”。 – 2012-03-08 05:19:27
objdatatable2.AsEnumerable().SkipWhile(dr2 => { return objdatatable1.AsEnumerable().Any(dr1 => { return (dr1.Field<String>("market_id ") == dr2.Field<String>("market_id ")); }) });
http://stackoverflow.com/questions/4212317/how-to-write-nested-query-in-linq – Dinesh 2012-03-08 04:23:17
这可以帮助你导出你的答案 – Dinesh 2012-03-08 04:23:35
请不要使用前缀与您的标题“ C#“等等。这就是标签的用途。 – 2012-03-08 05:15:27