0

データテーブル内の列のすべての行をループするlinqクエリまたは別の方法を作成しようとしています。

データ列ヘッダーは高度に知られています。ループするので、各セルのnull値をチェックできるようにしたいので、見つかった場合はデフォルト値を入力します。以下の場合は[dob]です。

以下はdataTableの例です。[dob]列をループしてnull値を探し、デフォルト値(01/01/1901など)に置き換えたいと思います。

[firstName],     [lastname],     [dob]
tester,          testerSurname,  null
tester2,         tester2Surname, 25/04/1876



 foreach (DataColumn column in table.Columns)
 {
      if (table.Rows.OfType<DataRow>().Any(r => r.IsNull(column)))
      {

      }

私は上記から始めましたが、値を取得して別の値に割り当てることを見つけることができませんでしたが、nullを見つけることができました。

4

4 に答える 4

2

列の各行をループするのではなく、行をループして、ループ内の各行についてその列をチェックします。

DataTable dt;
string col = "ColumnIAmCheckingForANullValue";
string def = "My Default Value for NULL";

foreach (DataRow row in dt.Rows) {
    if (string.IsNullOrEmpty(row[col].ToString())) {
        row[col] = def;
    }
}
于 2012-06-21T16:15:26.213 に答える
0

DBNull をチェックする場合、mikeschuld の回答のコードが機能するはずです。

DataTable dt;
string col = "ColumnIAmCheckingForANullValue";
string anotherValue = "My Default Value for NULL";

foreach (DataRow row in dt.Rows) {
    if (row[col] is DBNull) {
        row[col] = anotherValue;
    }
}

クエリを使用してデータから NULL を削除できます

SELECT ISNULL(col, '') FROM MyTable
于 2012-06-21T16:29:12.350 に答える
0

データベースの一括更新を実行する場合、Linq クエリは最善の方法ではありません。更新を実行するために SQL クエリを作成する方がよいでしょう。 COALESCE 演算子が役に立ちます。

UPDATE tablename
SET dob = COALESCE(dob, '1901/01/01')
于 2012-06-21T16:17:33.820 に答える
0

データテーブルを使用している場合は、行の列をループすることもできます

 foreach (DataRow dr in table.Rows)
        {

            foreach (DataColumn clm in table.Columns)
            {
                if (dr[clm] == DBNull.Value)
                {
                    dr[clm] = GetDefaultValueForColumn[clm.ColumnName];
                }
            }
        }
于 2012-06-21T16:22:56.463 に答える