我想要以一列为基础的不同记录。我使用以下方法。
dtUniqRecords = dt.DefaultView.ToTable(true, Columns);
ToTable
但实际上,我希望在我在方法中提到的那一列的基础上获得一个不同的记录。我希望选择的第一条记录应该显示它的其他列值。
例如:
PkID Name Column1 Column2 ...
221 null null null
我希望结果像
221 test1 test2 test3
我不确定您是否可以对数据表执行类似的操作,但您始终可以将其转换为 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();
}
}