3

値が存在するかどうかを確認するだけのデータベース列があります。

        DataTable dt = masterDataSet.Tables["Settings"];
        DataColumn SETTINGS = dt.Columns["DEFAULTSETTINGS"];

この列の値を繰り返し処理して、値が存在するかどうかを確認するだけです。ヘルプ

4

3 に答える 3

4

列ではなく行を反復します

DataColumn SETTINGS = dt.Columns["DEFAULTSETTINGS"];
foreach(DataRow row in dt.Select())
{
    object columnValue = row[SETTINGS];
    // Do something with columnValue
}
于 2009-09-08T23:17:21.713 に答える
3

単純な古い ADO.NET にはDataTable.SelectDataView.RowFilterなどのソリューションがいくつかあるため、Linq を使用したり、DataRows を手動で反復処理したりする必要はありません。


string value = "default"; 
bool found = dt.Select("DEFAULTSETTINGS = " + value).Length > 0;

フィルター処理された行を取得したら、それを使って好きなことができることは明らかです。私の例では、基準内に行があるかどうかを確認しましたが、適切と思われる方法でそれらを操作できます。

于 2009-09-09T01:08:40.483 に答える
1

.net 3.5 で linq を使用できます。


DataColumn col = dt.Columns["DEFAULTSETTINGS"];
object value = //expected value
bool valueExists = dt.AsEnumerable().Any(row => row.Field<object>(col).Equals(value));

編集:「DEFAULTSETTINGS」列に文字列「デフォルト」が含まれているかどうかを確認しようとしているコメントからのようです。Field 拡張メソッドは、その列のデータ行のオブジェクトを指定された型にキャストするだけなので、ToString() を使用する代わりに型パラメーターを変更できます。したがって、あなたの例では、おそらくこれを使用できます:


DataColumn col = dt.Columns["DEFAULTSETTINGS"];
bool valueExists = dt.AsEnumerable().Any(row => "default".Equals(row.Field<string>(col), StringComparison.OrdinalIgnoreCase);
于 2009-09-08T23:25:30.307 に答える