2013-04-15 83 views
0

我想具体field(ID)在数据表不整列该怎么做来获得不同:如何获得鲜明的特定列

我的表结构:

ID -- name -- desc 

代码:

DataTable dt = table.AsEnumerable() 
    .Distinct(DataRowComparer.Default)//I want to distinct by id instead 
    .CopyToDataTable(); 
+0

因此所得到的数据表将只ID? – StampedeXV

+0

不,我想要所有数据 –

+0

'id'应该已经不同了,这就是主键的工作方式...... –

回答

0

如果你的意思是你想在这里不同值的列表是一个例子:

List<Int32> fieldList = (from r in dt.AsEnumerable()SELECT Int32.Parse(r["ID"].ToString())).Distinct().ToList(); 
0

我不知道这是否是你想要什么,但你可以使用IEqualityComparer会忽略与同一ID

DataTable dt = table.AsEnumerable().Distinct(new MyComparer<YourClass>()) 
       .CopyToDataTable() 

的所有生产线:

class MyComparer<T> : IEqualityComparer<T> where T : YourClass 
    { 
     public bool Equals(T x, T y) 
     { 
      return x.Id.Equals(y.Id); 
     } 

     public int GetHashCode(T obj) 
     { 
      return obj.Id.GetHashCode(); 
     } 
    }