你可以試試這個:
var exceptItems = AllItems.Rows.Cast<DataRow>()
.Except(Items.Rows.Cast<DataRow>(), DataRowComparer.Default)
.ToList();
作爲替代方案,如果你想保留從中取出items
行後與allItems
數據表時,你可以試試這個(假設你有列Id
兩個數據表,它唯一地標識每一個數據表中的行)中:
var exceptItems = AllItems.Rows.Cast<DataRow>()
.Select((i, index) => new { id = i["Id"], index })
.Intersect(Items.Rows.Cast<DataRow>()
.Select((i, index) => new { id = i["Id"], index }))
.ToList();
for (int i = exceptItems.Count()-1; i >= 0; i--)
{
AllItems.Rows.RemoveAt(exceptItems[i].index);
}
下面是上述最後一個例子中的一個更好的安排:
AllItems.Rows.Cast<DataRow>()
.Select((i, index) => new { id = i["Id"], index })
.Intersect(Items.Rows.Cast<DataRow>()
.Select((i, index) => new { id = i["Id"], index }))
.OrderByDescending(i => i.index)
.ToList()
.ForEach(i => AllItems.Rows.RemoveAt(i.index));
這是[最佳](http://msdn.microsoft.com/en-us/library/vstudio/ff926074.aspx)對'variableNames'使用小寫首字母駝峯大小寫。 –
投票結束(發現後添加一個答案):http://stackoverflow.com/questions/4415519/best-way-to-remove-duplicate-entries-from-a-data-table - 特別是,http:///stackoverflow.com/a/15264638/1073107爲刪除重複行提供了非常簡潔的答案。 – dash