如何将两个DataTable中相同的数据过滤呢?需求是这样的,我们开发的食品药品监督管理系统需要跟外网网站进行数据交接,本来问题是不大,可是现在这个网站让别的公司去做了,呵呵 我们需要通过webservices从外网网站获取一些公众互动的信息。包括公众留言,局长信箱,投诉举报等等,但是慢慢的发现会有很多问题。
他们的数据库设计合理,他们将所有的数据放在一张表,然后通过标识类型,可是除了标识外,其他的字段完全就是留言的字段,又如何能够跟投诉举报联系起来呢?连投诉举报对象都没有
既然问题都是用来解决的,那就开始如何解决吧!
首先获得外网数据
DataTable dt = dal.GetGuestBooks().Tables[0];
然后是内网数据
DataTable SwitchToDT = fdaDal.GetSwitchToWebGuestBooks();
通过Linq对2个datatable进行处理
var query1 = from r in dt.AsEnumerable()
where !(
from rr in SwitchToDT.AsEnumerable()
select rr.Field<string>("WebMarkId")
).Contains(r.Field<int>("GBId").ToString())
select r;
int rowNum = 0;
foreach (var row in query1)
{
AppealInfo appealModel = new AppealInfo();
// 留言人
appealModel.Appellor = row["GBPosterName"].ToString();
// 标题
appealModel.Title = row["GBName"].ToString();
// 留言时间
appealModel.AppealDate = Convert.ToDateTime(row["GBPostDateTime"]);
// 联系方式
if (row["GBPosterPhone"] != null)
{
appealModel.Contact = row["GBPosterPhone"].ToString();
}
else if (row["GBPosterMobile"] != null)
{
appealModel.Contact = row["GBPosterMobile"].ToString();
}
appealModel.Address = row["GBPosterAddr"].ToString();
// 留言内容
appealModel.Content = row["GBContent"].ToString();
// 办理状态
appealModel.TypeId = Convert.ToInt32(row["GBType"]);
appealModel.WebMarkId = row["GBId"].ToString();
// 添加到集合
list.Add(appealModel);
}
return list;