C#两个datetable运用linq进行联合查询并写入新表

   在C#中直接写SQL查询语句就可以实现SQL中联合查询表的功能,但有时候不得不对两个datetable进行linq联合查询。 

   string strCon = "Data Source=(local);Database=mete_data;Uid=sa;Pwd=123;";//定义数据库连接字符串

            SqlConnection sqlcon = new SqlConnection(strCon);//实例化数据库连接对象
            SqlDataAdapter sqlda;//声明SqlDataAdapter对象
            DataSet myds = new DataSet();//实例化数据集对象
            sqlda = new SqlDataAdapter("select * from USERMESSAGE", sqlcon);//实例化数据库桥接器对象
            sqlda.Fill(myds, "A");//填充DataSet数据集
            sqlda = new SqlDataAdapter("select * from RAIN_REALTIME", sqlcon);

            sqlda.Fill(myds, "B");//填充DataSet数据集

    var query = from abc in myds.Tables["A"].AsEnumerable()//使用LINQ从数据集中查询所有数据
                         join cde in myds.Tables["B"].AsEnumerable()
                         on abc.Field<string>("StationNo") equals cde.Field<string>("GprsID")
                         orderby abc.Field<string>("subdistrict") descending
                         select new
                          {
                              StreetName = abc.Field<string>("subdistrict"),
                              StationName = abc.Field<string>("StationName"),
                              rainValue = cde.Field<Int32>("RainValue"),
                          };
            DataTable boundTable = new DataTable();
            boundTable.Columns.Add("StreetName");
            boundTable.Columns.Add("StationName");
            boundTable.Columns.Add("rainValue", typeof(double));//这句话很重要,否则默认为string格式,影像聚合函数操作
            query.ToList().ForEach(q => boundTable.Rows.Add(q.StreetName, q.StationName, q.rainValue));
            //DataTable boundTable = query.CopyToDataTable<DataRow>();//这一句总是出错,请高手相助
            dataGridView1.DataSource = boundTable;//显示查询到的数据集中的信息


    //聚合函数

    object test = dt.Compute("sum(rainValue)", "");
             MessageBox.Show(test.ToString());


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值