2013-12-03 2 views
0

У меня есть набор данных, и я хочу заменить каждую ячейку «01/01/1754 00:00:00» на NULL.Замена определенного значения в наборе данных

Так что-то вроде FOR LOOP посмотреть, что цикл будет через каждую строку в наборе данных и проверить, если значение '01/01/1754 00:00:00' замените это значение с „NULL“

Благодаря

+0

пожалуйста, напишите то, что вы пробовали до сих пор? – shanmugharaj

ответ

0

Просто сканирование через каждую ячейку в наборе данных должны работать

for (int i = 0; i < sampleDataSet.Tables[0].Rows.Count; i++) 
{ 
    for (int j = 0; j < sampleDataSet.Tables[0].Columns.Count; j++) 
    { 
     if (sampleDataSet.Tables[0].Rows[i][j].ToString() == "01/01/1754 00:00:00") 
     { 
      sampleDataSet.Tables[0].Rows[i][j] = "NULL"; 
     } 
    } 
} 

Если целенаправленные данные существуют, только в одном столбце набора данных, то второй цикл может быть опущены.

+0

Ваш код работает, но есть ошибка с частью «NULL». Я получаю ошибку: System.FormatException: строка не была признана действительной DateTime. Существует неизвестное слово, начинающееся с индекса 0. – jeffry

+0

Если я положил дату, тогда он работает, но если я вложу строку, то она сломается. есть ли способ обойти это? спасибо – jeffry

+0

Я вижу. Это потому, что тип столбца - DateTime. Таким образом, вы можете присвоить DBNull.Value. – ChunLin

0

Пожалуйста, попробуйте этот код. Он работает для меня в процессе обновления.

var dt = DataSet.Table[0] // as per your requirement; 
     dt.Select(string.Format("[columnname] = '{0}' ", "datevalue")).ToList<DataRow>() 
       .ForEach(r => r["columnname"] = DBNull.Value); 
+0

Он выдает ошибку, потому что я не могу использовать NULL, потому что это не дата ... – jeffry

+0

Измените его на «NULL», как указано в вопросе. – shanmugharaj

+0

в какой-то другой логике он терпит неудачу из-за этого нуля? Неправильно? Он должен обновлять datatable с помощью null. Я заработал. :) – shanmugharaj

0

Вы упомянули DataSet здесь, но я сомневаюсь, что ты имел в виду DataTable, попробуйте следующий код:

foreach(DataTable dt in ds.Tables){ 
    foreach(DataRow row in dt.Rows){ 
    for(int i = 0; i < dt.Columns.Count; i++){ 
     if(object.Equals(row[i],"01/01/1754 00:00:00")) row[i] = null; 
    } 
    } 
} 
+0

решение опубликовано, но спасибо tho :) – jeffry

Смежные вопросы