美好的一天。我有一个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时,代码可以平稳运行。我尝试手动检查数据库中的所有数据,但没有发现可疑的东西,也没有给它带来负值的东西。
在这一点上,我不知道我的代码或数据库出了什么问题。谢谢。
答案 0 :(得分:1)
可能会发生,因为您的数据库的字符串长度小于5 确保所有R.remarks.length都大于5 可能是您需要检查或类似这样的东西:
R.remarks.Length > 5 ? R.remarks.Substring(5) : R.remarks