gpt4 book ai didi

c# - 这个 LINQ to SQL 错误是什么意思?

转载 作者:行者123 更新时间:2023-11-30 20:10:19 26 4
gpt4 key购买 nike

出于某种原因,我在我的 C#/ASP.NET 项目中遇到以下错误 - 可能与查询的 SubString 部分有关。但是,“SageJobNo”和“CutOffDate”始终被填充。

错误:

Invalid length parameter passed to the LEFT or SUBSTRING function.

代码如下:

 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;
}

编辑:错误发生在“foreach”行

最佳答案

如果您的字符串中没有任何' ' IndexOf将返回 -1 并且 Substring 将失败。

编辑
您可以通过检查字符串是否包含 "" 来进行保护。

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);

如果您更喜欢 ternary operator也可以使用。

如果您使用 Linq2Objects,您可以使用 s.Contract_Number.Split().First(),但 LINQ 无法将其转换为 SQL。

关于c# - 这个 LINQ to SQL 错误是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com