首页 新闻 会员 周边

Linq Join ON的问题

0
悬赏园豆:20 [待解决问题]

现在有2个DataTable

 DataTable dtA = new DataTable();
dtA.Columns.Add("id", typeof(int));
dtA.Columns.Add("price", typeof(string));
dtA.Rows.Add(1, "111");
dtA.Rows.Add(2, "222");
dtA.Rows.Add(3, "333");
dtA.Rows.Add(4, "444");
        DataTable dtB = dtA.Clone();
dtB.Rows.Add(1, "121");
dtB.Rows.Add(2, "221");

dtB.Rows.Add(4, "331");
dtB.Rows.Add(5, "331");
dtB.Rows.Add(6, "331");

现在可以查询出Tabla1中存在Table2中不存在的数据。

如何可以同时查询出Table2中存在Table1中不存在的数据呢?

 DataTable dtC = dtA.Clone();
dtC.Columns.Add("price_excel");

var query = from a in dtA.AsEnumerable()
join b in dtB.AsEnumerable()
on a.Field<int>("id") equals b.Field<int>("id") into g
from b in g.DefaultIfEmpty()
select new
{
id = a.Field<int>("id"),
price = a.Field<string>("price"),
price_excel = b == null ? "None" : b.Field<string>("price")
};

query.ToList().ForEach(q => dtC.Rows.Add(q.id, q.price, q.price_excel));
gwinfo.DataSource = dtC;
gwinfo.DataBind();
wilsonChan的主页 wilsonChan | 初学一级 | 园豆:185
提问于:2012-02-21 11:10
< >
分享
所有回答(1)
0

建议看看LINQ 的 Except 方法:http://kb.cnblogs.com/page/42473/

artwl | 园豆:16736 (专家六级) | 2012-02-21 18:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册