0

我想通过特定field(ID)的数据表而不是整行来区分如何做到这一点:

我的表结构:

 ID -- name -- desc

代码:

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

2 回答 2

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();
        }
    }
于 2013-04-15T14:09:13.257 回答
0

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

List<Int32> fieldList = (from r in dt.AsEnumerable()SELECT Int32.Parse(r["ID"].ToString())).Distinct().ToList();
于 2013-04-15T14:00:33.530 回答