如何在特定列上获得区别

时间:2013-04-15 13:55:09

标签: c# asp.net linq datatable distinct

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

我的表结构:

 ID -- name -- desc

代码:

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

2 个答案:

答案 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();
        }
    }