Naveen.Sanagasetti Ответов: 5

Удаление Пустых Строк DataTable


Всем привет,

У меня есть сомнения в обращении с DataTable. У меня есть DataTable, в моем datatable у меня есть 100 строк. Но из 100 только 5 строк , содержащих оставшиеся данные, все строки пусты.

Теперь мой вопрос заключается в том, что я хочу удалить все оставшиеся 95 строк. в какой строке нет данных.

Как это сделать, может ли кто-нибудь помочь мне в этом вопросе...

Simon_Whale

Могу ли я спросить, почему в вашей таблице данных так много пустых строк?

5 Ответов

Рейтинг:
2

fjdiewornncalwe

Если вам нужно сделать это без linq, вы можете попробовать это.
Примечание: Я только что выбил это здесь, я еще не полностью проверил синтаксис.

private void RemoveEmptyRows(DataTable source)
   for( int i = source.Rows.Count; i >= 0; i-- )
   {
      DataRow currentRow = source.Rows[i];   
      foreach( var colValue in currentRow.ItemArray)
      {
         if( !string.IsNullOrEmpty(colValue) )
            break;

         // If we get here, all the columns are empty
         source.Rows[i].Delete();
      }
   }
}


Рейтинг:
1

vyas_pratik20

Привет, в этом примере ваши фактические данные хранятся в dt.

 DataTable dt1=dt.Clone();
        var rows =from row in dt.AsEnumerable()
            where row.Field<string>("columnname") != null
            select row;
        foreach (DataRow dr in rows)
        {
            dt1.Rows.Add(dr);
        }
</string>


вы можете создать копию dt в dt1 и с помощью ссылки найти строку которая не имеет нулевого значения


Naveen.Sanagasetti

но я не использую LINQ

Рейтинг:
0

PranavSingh

Это исправленная версия ответа от fjdiewornncalwe. Я удалил логические и синтаксические ошибки, с которыми столкнулся при использовании этого кода.

private void RemoveEmptyRows(DataTable source)
{
   for (int i = source.Rows.Count; i >= 1; i--)
                {
                    DataRow currentRow = source.Rows[i - 1];
                    foreach (var colValue in currentRow.ItemArray)
                    {
                        if (!string.IsNullOrEmpty(colValue.ToString()))
                            break;

                        // If we get here, all the columns are empty
                        source.Rows[i - 1].Delete();
                    }
                }
}


Рейтинг:
0

alsolingam

Попробовать это:

dataTable = dataTable.Rows.Cast<datarow>().Where(row => !row.ItemArray.All(field => 
field is System.DBNull || string.Compare((field as string).Trim(),  
string.Empty) == 0)).CopyToDataTable();


CHill60

Этому вопросу уже почти 1,5 года!

Рейтинг:
0

sore_ron

Попробуйте эту модификацию кода сверху (fjdiewornncalwe)...

private static DataTable RemoveEmptyRows(DataTable source
{
  DataTable dt1 = source.Clone(); //copy the structure 
  for (int i = 0; i <= source.Rows.Count-1; i++) //iterate through the rows of the source
    {
      DataRow currentRow = source.Rows[i];  //copy the current row 
      foreach( var colValue in currentRow.ItemArray)//move along the columns 
       {
         if (!string.IsNullOrEmpty(colValue.ToString())  ) // if there is a value in a column, copy the row and finish
             {                      
                  dt1.ImportRow(currentRow);
                  break; //break and get a new row                        
              }                   
         }
              }
    return dt1;
 }