2012-12-15 32 views
0

我有像下面的數據表。這裏第2,3,4,5行是不允許的。我如何使用C#驗證此場景。請幫忙。這裏的列數不固定。使用C在數據表中複製行檢查#


A    B    C 
    A    B    C 
    A    B    
    A       C 
       B    C 
    A    B    B 
    B    B    C 
    A    C    B 
+0

你能解釋一下,爲什麼第2行? –

+0

我試着循環遍歷每一行,並用一些特殊字符串聯值,然後比較這些行。但我希望這種動態的方式,如使用選擇或每個...不想使用特殊字符串聯。要回答爲什麼第2行? 2,3,4,5行應被視爲第1行的重複項(某些業務邏輯)。 – Jayakishor

回答

1

C#的LINQ

此功能消除了來自列重複和空值。如果不是null你正在尋找什麼,那麼你只需要改變「DBNull」爲你想要的。

public static DataTable FilterDataTable(DataTable table) 
    { 
     // Erase duplicates 
     DataView dv = new DataView(table); 
     table = dv.ToTable(true, table.Columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray()); 

     // Get Null values 
     List<DataRow> toErase = new List<DataRow>(); 
     foreach (DataRow item in table.Rows)    
      for (int i = 0; i < item.ItemArray.Length; i++) 
      { 
       if (item.ItemArray[i].GetType().Name == "DBNull") 
       { toErase.Add(item); break; } 

      }    
     //Erase Null Values 
     foreach (DataRow item in toErase)    
      table.Rows.Remove(item); 

     return table;    
    }