將DataTable中某一列數據直接轉換成數組進行比較,使用的Linq,要引用命名空間using System.Linq;
1
2
3
4
5
6
|
string
[] arrRate = dtRate.AsEnumerable().Select(d => d.Field<
string
>(
"arry"
)).ToArray();
//A
string
[] arrTemp = dtTemp.AsEnumerable().Select(d => d.Field<
string
>(
"arry"
)).ToArray();
//B
string
[] arrUpd = arrRate.Intersect(arrTemp).ToArray();
//相同的數據 (修改)
string
[] arrAdd = arrRate.Except(arrTemp).ToArray();
//A中有B中沒有的 (新增)
string
[] arrNew = arrTemp.Except(arrRate).ToArray();
//B中有A中沒有的 (刪除)
|
例子:
1
2
3
4
5
6
|
string
[] arrRate =
new
string
[] {
"a"
,
"b"
,
"c"
,
"d"
};
//A
string
[] arrTemp =
new
string
[] {
"c"
,
"d"
,
"e"
};
//B
string
[] arrUpd = arrRate.Intersect(arrTemp).ToArray();
//相同的數據 (結果:c,d)
string
[] arrAdd = arrRate.Except(arrTemp).ToArray();
//A中有B中沒有的 (結果:a,b)
string
[] arrNew = arrTemp.Except(arrRate).ToArray();
//B中有A中沒有的 (結果:e)
|