I持って、このような分野で自分のユーザ名と従業員番号を含むフィールドから従業員番号を取得するクエリ:CSVファイルのLinqクエリで文字の存在を確認するにはどうすればよいですか?
名[社員番号]
例えば
フレッドBloggsは[1234]
私のクエリは、ほとんどの時間を正常に動作しますが、時折、フィールドには、従業員番号が含まれていない、ので、それは例外で、「範囲外のインデックス」がスローされます。以下のように(。すなわち、フィールドはちょうどそれが失敗します「フレッドBloggs」が含まれている場合)
クエリは次のとおりです。
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を2回解析し、「[」と「]」の存在を確認してから再度実際のインポートを行うことでこれを行うことができますが、これはCSVがかなり大きいので非効率的です。