需要根据来自一个数据表的条件来连接两个数据表

时间:2016-12-21 20:51:52

标签: c# csv datatable

我有2个数据表

1)运行查询并存储值

Select customer, address,**zipcode** from sometable where zipcode = ? 
mycmd.Parameters.Add("@zipcode", OdbcType.VarChar).Value = {**how to bring the value from datatable 2 zip**;

进入数据表?

2)将csv文件读入datatable zip,lat,long

我正在数据表1和

的数据行上运行foreach循环

如果找到的行匹配where条件中的zip值,那么我想要包含数据表2中的lat和long值

我的最终结果将类似于客户,地址,邮政编码,lat,长。

我在网上搜索了几个网站但是找不到任何东西。

我不能在这里发布两个数据表代码,可以吗?

1 个答案:

答案 0 :(得分:0)

这解决了我的问题

public static DataTable MergeTwoDataTables(DataTable dt1, DataTable dt2)
        {

 var collection = from t1 in dt1.AsEnumerable()
 join t2 in dt2.AsEnumerable() on ToNumericOnly(t1["ZIPCODE"].ToString().Trim().Substring(0,5))equals t2["Zip"] into DataGroup
 from item in DataGroup.DefaultIfEmpty()                            
  select new
   {
      CUSTOMER = ToNumericOnly(t1["CUSTOMER"].ToString()),
      ADDRESS=t1["ADDRESS"],
      ZIPCODE = t1["ZIPCODE"].ToString().Trim(),
      LAT= item == null ? string.Empty : item["lat"],
      LONG= item == null ? string.Empty : item["long"]
       };
 DataTable result = new DataTable("CustomerInfo");
   result.Columns.Add("CUSTOMER", typeof(string));
   result.Columns.Add("ADDRESS", typeof(string));         
   result.Columns.Add("ZIPCODE", typeof(string));
   result.Columns.Add("LAT", typeof(string));
   result.Columns.Add("LONG", typeof(string));

foreach (var item in collection)
   {
    result.Rows.Add(item.CUSTOMER,item.ADDRESS,item.ZIPCODE,
item.LAT,item.LONG);
 Console.WriteLine("{0}", item);
  //Console.ReadLine();
            }
            return result;
        }