2013-04-09 60 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(); 
     } 
    } 
相关问题