繰り返しのいずれかが失敗を無視して成功を維持できない場合に、linqを使用するときにどのように(もし可能であれば)知っていれば誰でも知ることができます。例:私はCSVインポートしています:キャスト時のLinqエラー。成功したコンバージョンを維持できますか?
string[] csvRows = File.ReadAllLines(fiList[fileCount].FullName);
var Rows = from row in csvRows.Skip(1)
let data = row.Split(',')
select new
{
Reference = data[0],
RequestDate = Convert.ToDateTime(data[1]),
};
をしてCSVファイルを次のようになります。
リファレンス、RequestDate ref1,20/6月10日午後12時00分00秒 ref2,55/06/10 00:00:00
明らかに、それはdatetimeに変換できないため(「文字列は有効なDateTimeとして認識されませんでした」)、失敗します。 .netがこれを無視して最初の行を返すように強制する方法はありますか?事前に
乾杯
ステュー
グレート答え:
読みやすさをサポートするための代替は、妥当性検査(単なる例)を考慮することです。上記のコードは少し剥ぎ取られていますが、いくつかの日付をチェックする必要がありますが、(DateTime.TryParse(data [1]、out result)&& DateTime.TryParse(data [5]、out結果))など。 – stuartw87
@ stuartw87:ラムダ式の中に "normal"コードを書くことができます。これは、さらに処理したいタイプのインスタンスを返す限りです。そうすることができます。 – BrokenGlass
もう一度BrokenGlassに感謝します。私はこれが今働いていると私の他の要件をストリップし、それらの不良行を格納するのに役立ちます。 – stuartw87