Я создал метод для удаления дубликатов из DataView. У меня нет возможности изменить запрос SQl, поэтому я могу изменить только существующие данные, извлеченные из базы данных в DataView.
Данные просмотра данных
Id, Name, Date
1, Павел, 12-05-2011
2, Марк, 12-05-2011
1, Павел, 12-05-2011
2, Марк, 12-05-2011
Мой метод:
private static void RemoveDuplicates(DataView source, string keyColumn)
{
DataRow[] dataRows = new DataRow[source.Table.Rows.Count];
source.Table.Rows.CopyTo(dataRows, 0);
var uniquePrimaryKeys = new List<Guid>(duplicateTable.Rows.Count);
foreach (DataRow row in duplicateTable.Rows)
{
if (uniquePrimaryKeys.Contains((Guid)row[keyColumn]))
source.Table.Rows.Remove(row);
else
uniquePrimaryKeys.Add((Guid)row[keyColumn]);
}
}
Интересно, есть ли лучший метод для достижения того же результата, но быстрее.