mysql 查询结果使用匿名类出错 返回

SqlSugar 老数据
5 711

创建表语句:


CREATE TABLE `student` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `schoolid` int(11) DEFAULT NULL,

  `name` varchar(50) DEFAULT NULL,

  `createtime` datetime DEFAULT NULL,

  `age` int(11) DEFAULT NULL,

  `grade` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4


代码段:

 var ssc = new SqlSugarClient(new ConnectionConfig()

            {

               

                ConnectionString = "Server=127.0.0.1;Port=3306;Database=SqlSugar4XTest;Uid=root;Pwd=123456;Default Command Timeout=10;Connection Timeout=5;",

                DbType = SqlSugar.DbType.MySql, //必填

                IsAutoCloseConnection = true

            });

            var expMethods = new List<SqlFuncExternal>();

            expMethods.Add(new SqlFuncExternal()

            {

                UniqueMethodName = "SumSugar",

                MethodValue = (expInfo, dbType, expContext) =>

                {

                    if (dbType == DbType.SqlServer)

                        return string.Format("SUM({0})", expInfo.Args[0].MemberName);

                    else if (dbType == DbType.MySql)

                        return string.Format("SUM({0})", expInfo.Args[0].MemberName);

                    else

                        throw new Exception("未实现");

                }

            });

            ssc.CurrentConnectionConfig.ConfigureExternalServices = new ConfigureExternalServices()

            {

                SqlFuncServices = expMethods //set ext method

            };

            try

            {

                var sss12 = ssc.Queryable<Student>().GroupBy(o => o.Name).Select(o => new { Age = SumSugar(o.Age) }).ToList();

            }

            catch (Exception e)

            {

                

            }


热忱回答5

  • fate sta fate sta VIP0
    2021/12/24

      var sss12 = ssc.Queryable<Student>().GroupBy(o => o.Name).Select(o => new { Age =Convert.ToInt32(SqlFunc.AggregateSum(o.Age)) }).ToList();

    0 回复
  • fate sta fate sta VIP0
    2021/12/24

    默认就有sum函数,MYSQL驱动有点问题,SUM之后变成了decimal

    0 回复
  • fate sta fate sta VIP0
    2021/12/24

    你先这样用下个版本兼容一下

    0 回复
  • 玄云 玄云 VIP0
    2021/12/24

    本来再加一个toint的扩展方法也可以。但是查询结果要和另外一些结果groupjoin。之后list.addrange。需要保持前后匿名类型一致,这样代码写起来就很难看了。

    @fate sta

    0 回复
  • 玄云 玄云 VIP0
    2021/12/24

    @fate sta:麻烦了

    0 回复