0

我想要以一列为基础的不同记录。我使用以下方法。

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

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

例如:

PkID Name Column1 Column2 ...
221  null null null

我希望结果像

221 test1   test2 test3
4

1 回答 1

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();
        }
    }
于 2013-04-09T11:40:50.477 回答