果糖网

SqlFunc.MappingColumn报异常 返回

SqlSugar
3 133
该叫什么 qzuser 发布于2周前
悬赏:5 飞吻

                var dryTblRecords2 = GetDb()

                    .Queryable<DryTable, ProdTable>((x, p) => new JoinQueryInfos(JoinType.Left, x.MO == p.MOID))

                    .Where(x => x.Company == company)

                    .Where(exp2.ToExpression())

                    .Select((x, p) => new ProductionReport

                    {

                        ProductionName = SqlFunc.Subqueryable<ProductTable>().Where(s => s.ItemId == p.ProductNumber).Select(s => s.Name),

                        MaterielName = SqlFunc.Subqueryable<ProductTable>().Where(s => s.ItemId == p.MaterielPN).Select(s => s.Name),

                        AssetNo = p.MoldNumber,

                        ProductionNumber = p.ProductNumber,

                        MaterielPN = p.MaterielPN,

                        TonerPN = p.TonerPN,

                        QtySched = p.QtySched,

                        MO = p.MOID,

                        ItemGrossWeight = p.ItemGrossWeight,

                        ProductionCycle = p.ProductionCycle,

                        MoldCavityQTY = p.MoldCavityQTY,

                        OperationTime = x.CreateTime,

                        ProductionID = x.ProductionLineID,

                        StartTime = x.CreateTime,

                        //这一句代码,需要最新版本的sqlsugar,所以更新了sqlsugar版本

                        ProductionTime = SqlFunc.MappingColumn(default(string), SqlFunc.MergeString("(select MO from DryTable where ID='", x.ID,"') ")),

                        

                        OperationType = "烘料",

                        DryNum = x.DryNum,

                        Operator = x.DryMan,

                    }).ToList();



ProductionTime = SqlFunc.MappingColumn(default(string), SqlFunc.MergeString("(select MO from DryTable where ID='", x.ID,"') "))


目的:我希望计算两个时间的差值



尝试:


1、尝试使用自己的方法,但是sqlsugar的select不允许使用,推荐使用sqlfunc的内置方法


2、尝试使用sqlfunc中的使用sql语句的方法,也就是上面代码中的MappingColumn,可以直接写固定一句成功返回结果,但是如果加入了局部变量x.id拼接成sql,总是返回异常,例如下面的情况说明




情况:


正常运行:ProductionTime = SqlFunc.MappingColumn(default(string), "SELECT datediff( minute, '2021-03-20 00:11:14', '2021-03-20 00:11:14' )"),


异常运行:ProductionTime = SqlFunc.MappingColumn(default(string), "SELECT datediff( minute, '"+x.CreateTime+"', '"+x.ModifyTime+"' )"),




异常:


Index and length must refer to a location within the string.


Parameter name: length


热忱回答3

  • ProductionTime = SqlFunc.MappingColumn(default(string), SqlFunc.MergeString("(select MO from DryTable where ID='", x.ID,"') "))



    改成



    ProductionTime = SqlFunc.MappingColumn(default(string),  "(select MO from DryTable where ID= x.ID  )" 



    0 回复
  • 只能用字符串不能和表达式拼接

    0 回复
  • @fate stay night:非常感谢!已经成功解决我的问题

    0 回复

学习文档