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