我有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