【问题标题】: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();
}
}