zoukankan      html  css  js  c++  java
  • SqlSugar之SqlQueryDynamic返回值处理

    现在有个需求,有一张表每个月表名都会变的,但结构是一样的,我们不能再用类映射来完成的,我不能每个月都去手动添加,我们只能使用sql语句来完成这个需求。为了方便我这边选择的是SqlQueryDynamic返回dynamic类型来处理。dynamic是我们的动态类型,还是比较方便的。dynamic不能直接 as Objct,如果想那只能循环每个dynamic,然后进行属性赋值,这样太麻烦了。我们需要用json来进行过度,json相当于是我们的桥梁,dynamic——>强Class的桥梁。

    环境:用的是Oracle数据库,其他是一样的。

    ①拼接我们的sql语句

               //根据需求拼接你的表名
                    string tableName = $"T_YKP_POSITION{year}_{months}";
                    //查询返回dynamic类型,因为是Oracle数据库,返回的列都是大写
                    //特别注意:dynamic这里是数组
                    dynamic dyList = dbOracle.Db.Ado.SqlQueryDynamic($@"
    SELECT Id,Userid,Distance,Speed,Deviate,Gettime,Glng,Glat,Blng,Blat,Intervaltime,Itype,Createdate 
    from  {tableName} where Gettime>=TO_DATE(TO_CHAR(sysdate,'yyyy-mm-dd'), 'yyyy-mm-dd,hh24:mi:ss') order by GETTIME 
                ");

    ②利用json进行转换

     //先把动态类型转json字符串
                    string json = JsonConvert.SerializeObject(dyList);
                    //json转强类型,TYkpPositionComm  是我们根据列创建的强类型用来接受的
                    List<TYkpPositionComm> result = JsonConvert.DeserializeObject<List<TYkpPositionComm>>(json);
    TYkpPositionComm类:
        public partial class TYkpPositionComm
        {
            public string ID { get; set; }
            public string USERID { get; set; }
            public decimal? DISTANCE { get; set; }
            public decimal? SPEED { get; set; }
            public decimal? DEVIATE { get; set; }
            public DateTime? GETTIME { get; set; }
            public decimal? GLNG { get; set; }
            public decimal? GLAT { get; set; }
            public decimal? BLNG { get; set; }
            public decimal? BLAT { get; set; }
            public decimal? INTERVALTIME { get; set; }
            public decimal? ITYPE { get; set; }
            public DateTime? CREATEDATE { get; set; }
        }

    这样就可以了

  • 相关阅读:
    CSS cursor 属性笔记
    sql 不等于 <>
    去掉时间中的时分秒
    ref 和 out区别
    关于闭包(未完待续)
    面向对象——多态(摘)
    SQL Service 数据库 基本操作 视图 触发器 游标 存储过程
    遍历winform 页面上所有的textbox控价并赋值string.Empty
    关于Html 和Xml 区别(备忘)
    python之面向对象进阶
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10329120.html
Copyright © 2011-2022 走看看