Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: ASP.NET C#4.0
Hi everybody,
 
I have a doubt in handling the DataTable. I have a DataTable, in my datatable i have 100 rows. But out 100 , only 5 rows having data remaining all rows are empty.
 
Now my question is i want to remove all remaining 95 rows. which row doesn't have a data.
 
How to do can anybody help me regarding this issue...
Posted 15-Feb-13 2:16am
N@veen.S1.6K
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

If you need to do it without linq, you can try this.
NOTE: I did just hammer this out here, I haven't thoroughly checked the syntax.
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();
      }
   }
}
  Permalink  
v2
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Hi, in flowing example your actual data is stored in 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>
 
you can create copy of dt to dt1 and using link you can find row which dose not have null value
  Permalink  
Comments
naveensenagasetti at 15-Feb-13 8:21am
   
but i'm not using LINQ
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 3

It is corrected version of answer from fjdiewornncalwe. I removed logical & syntax errors i faced while using that code.
 
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();
                    }
                }
}
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 5

Try this:
dataTable = dataTable.Rows.Cast().Where(row => !row.ItemArray.All(field =>
field is System.DBNull || string.Compare((field as string).Trim(),
string.Empty) == 0)).CopyToDataTable();
  Permalink  
Comments
CHill60 at 23-Oct-14 10:34am
   
The question is nearly 1.5 years old!

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 460
1 OriginalGriff 220
2 Kornfeld Eliyahu Peter 210
3 DamithSL 210
4 Peter Leow 100
0 OriginalGriff 7,215
1 DamithSL 5,199
2 Maciej Los 4,866
3 Sergey Alexandrovich Kryukov 4,757
4 Kornfeld Eliyahu Peter 4,514


Advertise | Privacy | Mobile
Web01 | 2.8.141223.1 | Last Updated 23 Oct 2014
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100