我想通过特定field(ID)
的数据表而不是整行来区分如何做到这一点:
我的表结构:
ID -- name -- desc
代码:
DataTable dt = table.AsEnumerable()
.Distinct(DataRowComparer.Default)//I want to distinct by id instead
.CopyToDataTable();
我不知道这是否是您想要的,但您可以使用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();
}
}
如果你的意思是你想要一个不同值的列表,这里是一个例子:
List<Int32> fieldList = (from r in dt.AsEnumerable()SELECT Int32.Parse(r["ID"].ToString())).Distinct().ToList();