解决: C# 多个dataTable添加到 dataSet中

解决: C# 多个dataTable添加到 dataSet中

项目中用到 查询多个结果集

此处调用多个sql语句 返回多个dataTable 后进行封装成一个dataSet ,然后返回

先定义 多个dataTable 和一个返回dataSet

            DataSet ds = new DataSet();
            DataTable dt0 = new DataTable();
            DataTable dt1 = new DataTable();
            DataTable dt2 = new DataTable();
            DataTable dt3 = new DataTable();

然后给每个dataTable 起个名字

            dt1.TableName = "Table0";
            dt2.TableName = "Table1";
            dt3.TableName = "Table2";

最后调用dataTable.Copy方法

            ds.Tables.Add(dt1.Copy());
            ds.Tables.Add(dt2.Copy());
            ds.Tables.Add(dt3.Copy());

最后返回dataSet

完整代码


        /// 
        /// Hwq 2022年4月18日17:11:40
        /// 查询 围栏统计详情
        /// 
        /// IOT数据库链接
        /// AnalysisData数据库链接
        /// 部门fguid
        /// 开始时间
        /// 结束时间
        /// 类型:1:按日查询 2:按月查询 3:按年查询
        /// 
        public object SQueryFenceStatisticsDetails(string fSqlConnectString, string sqlConnectString, Guid fAgentGUID, DateTime fStartTime, DateTime fEndTime, int fSelectType)
                {
            DReport dReport = new DReport();
            DataSet ds = new DataSet();
            DataTable dt0 = new DataTable();
            DataTable dt1 = new DataTable();
            DataTable dt2 = new DataTable();
            DataTable dt3 = new DataTable();

            // 按日查询   直接传值  
            // 按月查询   开始时间 月初  
            //            结束时间 月末
            if (fSelectType == 1)
            {

                // 按月 
                //  重新定义时间逻辑.......
                fStartTime = fStartTime.AddDays(1 - fStartTime.Day); //本月月初
                fEndTime = fEndTime.AddDays(1 - fEndTime.Day).AddMonths(1).AddDays(-1); //本月月末
            }
            
           // 1.先根据 部门fguid  查询 部门所有车辆 fguid  ,拼接一条字符串 用逗号间隔
            string fVehicleGUIDs = "";
            dt0 = dReport.DQueryFVehicleGUIDsByFAgentGUID(fSqlConnectString, fAgentGUID);
            if (dt0 != null && dt0.Rows.Count > 0)
            {
                foreach (DataRow dr in dt0.Rows)
                {

                    if (string.IsNullOrEmpty(fVehicleGUIDs))
                    {
                        fVehicleGUIDs += dr["FVehicleGUID"].ToString();
                    }
                    else
                    {
                        fVehicleGUIDs += "," + dr["FVehicleGUID"].ToString();
                    }
                }
            }
            else
            {
                // 部门下面没有车辆,返回空
                return ds;
            }
          // 2.在 根据车俩fguid  查询 “满洲里/阿拉山口/二连浩特/霍尔果斯” 四个出境关口 次数统计(第一个饼状图)
            // 3.再 根据车辆fguid  查询 统计所有车辆始发站次数  和  占比 (第二个饼状图)
            // 4.在 根据车辆fguid  查询 每个围栏停留时长
            if (dReport.DQueryCountFenceStatusticByFVehicleGUIDs(sqlConnectString, fStartTime, fEndTime, General.Instance.GetStrArray2StrIn(fVehicleGUIDs)) != null)
            {
                dt1 = dReport.DQueryCountFenceStatusticByFVehicleGUIDs(sqlConnectString, fStartTime, fEndTime, General.Instance.GetStrArray2StrIn(fVehicleGUIDs));
            }
            if (dReport.DQueryFStartCityPointByFVehicleGUIDs(sqlConnectString, fStartTime, fEndTime, General.Instance.GetStrArray2StrIn(fVehicleGUIDs)) != null)
            {
                dt2 = dReport.DQueryFStartCityPointByFVehicleGUIDs(sqlConnectString, fStartTime, fEndTime, General.Instance.GetStrArray2StrIn(fVehicleGUIDs));
            }
            if (dReport.DQueryFenceFStopDurationByFVehicleGUIDs(sqlConnectString, fStartTime, fEndTime, General.Instance.GetStrArray2StrIn(fVehicleGUIDs)) != null)
            {
                dt3 = dReport.DQueryFenceFStopDurationByFVehicleGUIDs(sqlConnectString, fStartTime, fEndTime, General.Instance.GetStrArray2StrIn(fVehicleGUIDs));
            }
            // 5.合并dataTable , 返回 dataSet 
            dt1.TableName = "Table0";
            dt2.TableName = "Table1";
            dt3.TableName = "Table2";
            ds.Tables.Add(dt1.Copy());
            ds.Tables.Add(dt2.Copy());
            ds.Tables.Add(dt3.Copy());
            return ds;
        }
   

你可能感兴趣的:(C#,c#)