C#のデータテーブルからローを削除しようとすると問題が発生しました。問題は、データテーブルがSQLから構築されているため、任意の数の列を持つことができ、主キーがある場合とない場合があります。したがって、特定の列またはプライマリキーの値に基づいて行を削除することはできません。C#の汎用データテーブルからローを削除
ここで私がやっているの基本的なアウトラインです:
//Set up a new datatable that is an exact copy of the datatable from the SQL table.
newData = data.Copy();
//...(do other things)
foreach (DataRow dr in data.Rows)
{
//...(do other things)
// Check if the row is already in a data copy log. If so, we don't want it in the new datatable.
if (_DataCopyLogMaintenance.ContainedInDataCopyLog(dr))
{
newData.Rows.Remove(dr);
}
}
は、しかし、私はエラーメッセージを与えることを、「与えられたDataRowは、現在のDataRowCollectionではありません」。 newDataがデータの直接コピーである場合、どちらが意味をなさないか。誰か他に提案はありますか? MSDNサイトはそれほど役に立ちませんでした。
ありがとうございます!
はい、あなたは_copy_を持っていますが、正確な行_はありません。 newDataから行を削除するには、別のテーブルの行ではなく、その行に含まれている行の1つを参照する必要があります(重複しているにもかかわらず、異なる行であり、同じ行を削除することはできませんnewDataからの行)。 –