我希望在一列的基础上有不同的记录。我使用以下方法。
dtUniqRecords = dt.DefaultView.ToTable(true, Columns);
但实际上,我希望在ToTable
方法中提到的那一列的基础上有一个不同的记录。我想要选择的第一条记录应显示其他列值。
例如:
PkID Name Column1 Column2 ...
221 null null null
我希望结果像
221 test1 test2 test3
答案 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();
}
}