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

创建表语句:
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 VIP0
2021/12/24var sss12 = ssc.Queryable<Student>().GroupBy(o => o.Name).Select(o => new { Age =Convert.ToInt32(SqlFunc.AggregateSum(o.Age)) }).ToList();
0 回复 -
fate sta VIP0
2021/12/24默认就有sum函数,MYSQL驱动有点问题,SUM之后变成了decimal
0 回复 -
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 回复