Я выбрал бы перезапись обратного адреса на стеке. Это удалось бы как самое прозрачное. Замена free
будет только работать с выделенными "куче" "объектами".
Так работает Distinct
. Обычно он использует метод GetHashCode
. Вы можете написать GetHashCode
, чтобы делать то, что вам нужно. Что-то вроде
public int GetHashCode(DataRow obj)
{
var values = obj.ItemArray.Except(new object[] { obj[obj.Table.PrimaryKey[0].ColumnName] });
int hash = 0;
foreach (var value in values)
{
hash = (hash * 397) ^ value.GetHashCode();
}
return hash;
}
Поскольку вы лучше знаете свои данные, вы, вероятно, сможете придумать лучший способ сгенерировать хэш.