Chr*_*ris 2 c# sql asp.net linq-to-sql
我出于某种原因在我的C#/ ASP.NET项目中遇到以下错误 - 可能是它与查询的SubString部分有关.但是,总是填充"SageJobNo"和"CutOffDate".
错误:
传递给LEFT或SUBSTRING函数的长度参数无效.
代码如下:
IEnumerable<CcsVwICATimesheet> Timesheets = (from s in SageDC.CcsVwICATimesheets where s.Contract_Number.Substring(0, s.Contract_Number.IndexOf(" ")) == SageJobNo && s.Timesheet_Date <= CutOffDate select s);
foreach (CcsVwICATimesheet Timesheet in Timesheets)
{
LabourCosts += (double)Timesheet.Cost_Value;
}
Run Code Online (Sandbox Code Playgroud)
编辑:错误发生在'foreach'行
如果你' '的字符串中没有任何内容IndexOf将返回-1并且子字符串将失败.
编辑
您可以通过检查字符串是否包含来保护" ".
IEnumerable<CcsVwICATimesheet> Timesheets =
(from s in SageDC.CcsVwICATimesheets
where
(
(s.Contract_Number.Contains(" ") && s.Contract_Number.Substring(0, s.Contract_Number.IndexOf(" ")) == SageJobNo)
||
(!s.Contract_Number.Contains(" ") && s.Contract_Number == SageJobNo)
)
&& s.Timesheet_Date <= CutOffDate select s);
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢可以使用的三元运算符.
如果您使用Linq2Objects,则可以使用s.Contract_Number.Split().First(),但LINQ无法将其转换为SQL.
| 归档时间: |
|
| 查看次数: |
545 次 |
| 最近记录: |