2013-04-09 61 views
0

我想在一列的基礎上的不同記錄。我使用以下方法。訪問在一列的基礎上選擇爲不同記錄的第一條記錄的所有字段

dtUniqRecords = dt.DefaultView.ToTable(true, Columns); 

但實際上我想是該列的基地之一區分記錄我在ToTable方法提了。我希望所選的第一個記錄應顯示其他列值。

例如:

PkID Name Column1 Column2 ... 
221 null null null 

我想結果是這樣

221 test1 test2 test3 

回答

1

我不知道如果有什麼你能做到這一點是一個DataTable相似,但你總是將其轉換爲列表並使用自定義比較器獲取不同的值

var dt = new DataTable(); 
    var dataList = (from DataRow row in dt.Rows 
       select new SomeObject 
       { 
        Id = Convert.ToInt32(row["Id"]) 
       }).ToList(); 

    dataList = dataList.Distinct(new SomeDistinctComparer()).ToList(); 



    public class SomeObject 
    { 
     public int Id { get; set; } 
    } 

    public class SomeDistinctComparer : IEqualityComparer<SomeObject> 
    { 
     public bool Equals(SomeObject x, SomeObject y) 
     { 
      return x.Id == y.Id; 
     } 

     public int GetHashCode(SomeObject obj) 
     { 
      return obj.Id.GetHashCode(); 
     } 
    } 
相關問題