2

私はasp.netとc#で働いています。

アプリケーションに 1 つの列を持つデータテーブルがあります。その列の値を反復処理し、それらの値を別の値でチェックしたいのですが、その方法を教えてください。foreach で試しましたが、うまくいきません。

コード:

  foreach (DataRow dr in dt.Rows)
        {
            int code = Convert.ToInt32(dt.Rows[0]["Code"]);

            if (code == pcode)
            {
                //do something
            }
            else 
            { }
        }

ノート:

dtは列コードを持つ私のデータテーブルです。列コードすべての値をpcodeと比較したいと思います。

4

4 に答える 4

2
int code = Convert.ToInt32(dr["Code"]);

NULLもチェックしたいかもしれませんが:)

于 2013-01-21T08:24:45.737 に答える
1

ループ内で、dt.Rows[0] の代わりに dr にアクセスします。

于 2013-01-21T08:23:18.360 に答える
0

常に最初の行にアクセスしています。

dt.Rows[0]["Code"]  // use dr instead of dt.Rows[0]

dtは列コードを含むデータテーブルです。列コードのすべての値をpcodeと比較したいと思います。

したがって、すべての値を1つの変数と比較したいと仮定した場合、すべてのフィールドがこの値と等しい場合、bool変数はtrueそうでない場合は、正しいのfalseでしょうか。

Linqを使用できます:

var allEqual = dt.AsEnumerable()
                 .All(r => r.Field<int>("Code") == pcode);

Enumerable.Allシーケンスのすべての要素が条件を満たすかどうかを決定します。

于 2013-01-21T08:25:15.643 に答える
0
foreach (DataRow dr in dt.Rows)
{
    object o = dr["Code"];
    if (o != DBNull.Value) // Check for null
    {
        int code = Convert.ToInt32(o);

        if (code == pcode)
        {
            //do something
        }
        else 
        { }
    }
}
于 2013-01-21T08:30:11.290 に答える