C# - Remove rows with the same column value from a DataTable

前端 未结 6 735
深忆病人
深忆病人 2021-01-03 09:40

I have a DataTable which looks like this:

 ID   Name    DateBirth
.......................
 1     aa      1.1.11
 2     bb      2.3.11
 2     cc          


        
6条回答
  •  一向
    一向 (楼主)
    2021-01-03 10:34

    1. Get a record count for each ID
    var rowsToDelete = 
        (from row in dataTable.AsEnumerable()
        group row by row.ID into g
        where g.Count() > 1
    
    1. Determine which record to keep (don't know your criteria; I will just sort by DoB then Name and keep first record) and select the rest
    select g.OrderBy( dr => dr.Field( "DateBirth" ) ).ThenBy( dr => dr.Field( "Name" ) ).Skip(1))
    
    1. Flatten
    .SelectMany( g => g );
    
    1. Delete rows
    rowsToDelete.ForEach( dr => dr.Delete() );
    
    1. Accept changes
    dataTable.AcceptChanges();
    

提交回复
热议问题