У меня есть запрос, который получает число сотрудников из поля, содержащее имя пользователя и номер сотрудника в поле, как это:Как проверить наличие символа в запросе Linq в CSV-файле?
имя [номер сотрудника]
например
Фред Bloggs [1234]
Мой запрос отлично работает большую часть времени, но иногда поле не содержит номер сотрудника, и, следовательно, он бросает «индекс вне диапазона» исключение. (То есть, если поле содержит только «Фред Пупкин» это не получится.)
Запрос выглядит следующим образом:
var allEmpNos = (from row in csvTable.AsEnumerable()
join d in DeltekList
on row.Field<string>("Phone number") equals d.Mobile into t
from rt in t.DefaultIfEmpty()
select new
{
name = row.Field<string>("User name"),
empNo = rt == null ? row.Field<string>("User name").Split('[')[1].Replace("]", "") : rt.EmpNo,
});
Как я могу справиться с «плохой данные» во время выполнения? Моим идеалом было бы для него исключение, объясняющее пользователю исправить файл CSV. Я мог бы это сделать, разобрав CSV дважды, один раз, чтобы проверить наличие «[» и «]», а затем снова сделать фактический импорт, но это кажется неэффективным, поскольку CSV довольно большой.