ここにあるドキュメントから: http://msdn.microsoft.com/de-de/library/system.data.datatable.compute(v=vs.80).aspx
構文は次のとおりです。
dt.Compute(expression, filter);
Sum、Count、Average などのexpression
集計関数である必要があります。
このfilter
部分は、式で使用されるフィールドを設定します。列が呼び出され、フィールドにフィルターをcolTest
含める必要がある場合は、次のようになります。Test
colTest == 'Test'
編集
私が理解していることから、特定のフィールドに「テスト」が含まれている場合、コンテンツを変更したい列があります。
私はこの簡単なモックアップを書いて、それをなしで達成する方法を示しました。dt.Compute()
DataTable table = new DataTable();
table.Columns.Add("id", typeof(int));
table.Columns.Add("Test", typeof(string));
table.Columns.Add("ValueToChange", typeof(string));
table.Rows.Add(1, "1");
table.Rows.Add(2, "0");
table.Rows.Add(3, "1");
table.Rows.Add(4, "0");
table.Rows.Add(5, "1");
//Select all Rows in which the column Test is "1"
var rows = table.AsEnumerable().Where (t => t.Field<string>("Test") == "1");
foreach (var x in rows)
{
//set the field ValueToChange to "changed"
x.SetField("ValueToChange", "changed");
//linqpad output. ignore it
x.Dump();
}
これはあなたのシナリオとは異なるかもしれませんが、いくつかの簡単な手順で適応させることができます。