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; }
        }

    这样就可以了

  • 相关阅读:
    VS 2008 和 .NET 3.5 Beta 2 发布了
    搭建.NET 3.0环境
    Expression Studio和Silverlight学习资源、安装问题汇总
    Discuz! NT官方社区
    VS2005中ajax安装指南[转]
    IT人 不要一辈子靠技术生存(转)
    Discuz!NT2.5发布 正式版同步开源
    VS2005下开发Silverlight 1.1翻译加补充
    自动化测试案例
    [原]JavaScript必备知识系列开篇
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/10329120.html
Copyright © 2011-2022 走看看