Если в вашей строке нет ' '
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);
Если вы предпочитаете троичный оператор , который также может быть использован.
Если вы используетеLinq2Objects вы можете использовать s.Contract_Number.Split().First()
, но LINQ не может перевести это в SQL.