私は、1つのテーブルとその中のいくつかのレコードを持つデータセット(以下のデータセットと呼ぶ)を持っています。列の1つはメッセージと呼ばれ、エラーメッセージが含まれています。このフィールドに値があるレコードがあれば、それをエラーデータセット(下記のerrorDataSet)にコピーして元のデータセットから削除します。私は、LINQでこれまでのところ得ることができた:LINQでデータセットからレコードを削除する方法
DataSet errorDataSet = dataSet.Copy();
//find all records that have a Message column value
var query = from row in errorDataSet.Tables[0].AsEnumerable()
where !String.IsNullOrEmpty(row.Field<string>("Message"))
select row;
DataSet tempErrorDataSet = errorDataSet.Clone();
foreach (var row in query)
{
tempErrorDataSet.Tables[0].Clear();
tempErrorDataSet.Tables[0].ImportRow(row);
utility.WriteError(connectorName, row["Message"].ToString(), tempErrorDataSet);
//remove the error row from the good data
dataSet.Tables[0].Rows.Remove(row);
}
一番下の行は、例外をスローしたり、私はLINQでこれを行うための簡単な方法があると確信して収集などを変更することに関するエラーが発生します。
注:私はtempErrorDataSetを持っているので、XMLに変換してストアドプロシージャに渡すだけです。一度にそのフォーマットのレコードしか取らないので、毎回クリアします。
エラー、例外などは何ですか? – gideon
コレクションからアイテムを削除する例外はありますが、LINQを使用してこのコードを完全に書き直したいのですが、私の質問によると(例外ではありません) – Rodney