首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

linq to datatTable过滤条件解决方法

2013-04-20 
linq to datatTable过滤条件两个tableAidname1aa2b3c4dBidname1a2b想要把A内的数据同步到B来DataTable dt_

linq to datatTable过滤条件


两个table
A
id    name
1      aa
2      b
3      c
4      d
B
id     name
1      a
2      b

想要把A内的数据同步到B来

DataTable dt_Except = a.Clone();
var query_Except = a.AsEnumerable().Except(b.AsEnumerable(), DataRowComparer.Default);
query_Except.ToList().ForEach(q => dt_Except.Rows.Add(q.ItemArray));
1:如果ID已存在则更新
2:如果ID不存在则添加
我想请问下上面2个条件怎么判断

最后得到的结果是
B
id     name
1      aa
2      b
3      c
4      d
[解决办法]

void Main()
{
var A=new DataTable();
A.Columns.Add("id",typeof(int));
A.Columns.Add("name",typeof(string));
A.Rows.Add(1,"aa");
A.Rows.Add(2,"b");
A.Rows.Add(3,"c");
A.Rows.Add(4,"d");
var B=A.Clone();
B.Rows.Add(1,"a");
B.Rows.Add(2,"b");
B.Rows.Add(5,"f");
 
var query_Except =B.AsEnumerable().Except(A.AsEnumerable(), new MyCompare()).CopyToDataTable();
A.Merge(query_Except);
B=A; 
}
 public  class MyCompare : IEqualityComparer<DataRow>
{
public bool Equals(DataRow t1, DataRow t2)
{
 return (t1.Field<int>("id") == t2.Field<int>("id"));
}
public int GetHashCode(DataRow t)
{
return t.ToString().GetHashCode();
}  
}

热点排行