MVC Linq无效的长度参数传递给LEFT或SUBSTRING函数

时间:2018-10-22 08:31:38

标签: c# linq

美好的一天。我有一个Linq代码,该代码在运行时显示此错误

  

传递给LEFT或SUBSTRING函数的长度参数无效。

但是当我尝试将所有相同的值放入SQL时,它可以正常工作。我的LINQ代码有问题吗?

SQL的输出 OUTPUT

代码

 var list = (from R in db.vwEtracs_Receipt
                    join RI in db.vwEtracs_ReceiptItem on R.objid equals RI.parentid
                    join IA in db.vwEtracs_IncomeAccount on RI.acctid equals IA.objid
                    join M in db.vwtbl_Motor
                         on new { motor_no = R.remarks.Substring(5), operator_id = R.payerId }
                         equals new { motor_no = M.motor_no, operator_id = M.operator_id } into M_join
                    from M in M_join.DefaultIfEmpty()
                    join F in db.tbl_Franchise on R.objid equals F.or_id into F_join
                    from F in F_join.DefaultIfEmpty()
                    join B in db.tbl_Make on M.brand_id equals B.id

                    where
                    IA.objid == "FTFA00000238" &&
                    R.voidId == null &&
                    R.remarks != null 
                    orderby R.txndate descending
                    select new PayedViewModel
                    {
                        application_no = F.application_no,
                        remarks = R.remarks,
                        serialno = R.serialno,
                        payername = R.payername,
                        payeraddress = R.payeraddress,
                        motor_no = M.motor_no,
                        chassis_no = M.chassis_no,
                        plate_no = M.plate_no,
                        brand_name = B.Make,
                        motor_id = M.motor_id,
                        year = R.txndate.Value.Year.ToString(),
                        mtop = F.mtop,
                        franchise_id = F.franchise_id
                    }
                    ).Distinct();

通常该行显示错误,motor_no = R.remarks.Substring(5),因为当我将其更改为4时,代码可以平稳运行。我尝试手动检查数据库中的所有数据,但没有发现可疑的东西,也没有给它带来负值的东西。

在这一点上,我不知道我的代码或数据库出了什么问题。谢谢。

1 个答案:

答案 0 :(得分:1)

可能会发生,因为您的数据库的字符串长度小于5 确保所有R.remarks.length都大于5 可能是您需要检查或类似这样的东西:

R.remarks.Length > 5 ? R.remarks.Substring(5) : R.remarks