Color列のあるテーブルがあるとしましょう。色にはさまざまな値があります。特定の列のアイテムを一度に処理できるC#メソッドがあります。したがって、私はしたいと思います:
foreach(colorname in mytable.getDistinctColornames)
monocolorMethod(mytable.getSubTableOnlyContainingRowsWithColor(colorname))
どうすればそれをエレガントに行うことができますか...?
とにかく、私はデータを前後にコピーすることを避けます。データテーブルについての見方をお願いします。特定の列の行のみを「表示」するビューと「書き込み可能な」ビュー(つまり、フィルター処理されたサブセットに書き込むと、元のテーブルが書き込まれます)
編集 :
「Car」テーブルがあり、すべての車の「Type」列の「Sedan」を「Truck」に置き換えて「Color=Red」にしたいとします。
次のコードを指定するにはどうすればよいですか?
DataTable cars (...); // the data
DataView dv = cars.DefaultView;
dv.RowFilter = "Color='Red'";
<ここでは、DataViewでループしたいと思います>。次のコードは機能しません:
foreach (row in dv.AsEnumerable)
{
if(row["Type"] == "Sedan")
row["Type"] = "Truck";
}
編集2:
このhttp://msdn.microsoft.com/fr-fr/library/system.data.dataview.allowedit.aspxを見つけました。
view.AllowEdit = true;
view[0].BeginEdit();
view[0]["FirstName"] = "Mary";
view[0]["LastName"] = "Jones";
view[0].EndEdit();