访问在一列基础上选择作为不同记录的第一条记录的所有字段

时间:2013-04-09 10:43:21

标签: c# asp.net .net datatable dataset

我希望在一列的基础上有不同的记录。我使用以下方法。

dtUniqRecords = dt.DefaultView.ToTable(true, Columns);

但实际上,我希望在ToTable方法中提到的那一列的基础上有一个不同的记录。我想要选择的第一条记录应显示其他列值。

例如:

PkID Name Column1 Column2 ...
221  null null null

我希望结果像

221 test1   test2 test3

1 个答案:

答案 0 :(得分:1)

我不确定你是否可以做一些类似于数据表的东西,但是你总是可以把它作为List转换并用自定义比较器获得不同的值

    var dt = new DataTable();
    var dataList = (from DataRow row in dt.Rows
                select new SomeObject
                {
                    Id = Convert.ToInt32(row["Id"])
                }).ToList();

    dataList = dataList.Distinct(new SomeDistinctComparer()).ToList();



    public class SomeObject
    {
        public int Id { get; set; }
    }

    public class SomeDistinctComparer : IEqualityComparer<SomeObject>
    {
        public bool Equals(SomeObject x, SomeObject y)
        {
            return x.Id == y.Id;
        }

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