【问题标题】:Accessing all fields of first record selected as distinct record on the base of one column访问以一列为基础选择为不同记录的第一条记录的所有字段
【发布时间】:2013-03-31 18:10:03
【问题描述】:

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

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

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

例如:

PkID Name Column1 Column2 ...
221  null null null

我希望结果是这样的

221 test1   test2 test3

【问题讨论】:

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


    【解决方案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();
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多