Удалите дубликаты из DataTable и пользовательского IEqualityComparer <DataRow>

Я выбрал бы перезапись обратного адреса на стеке. Это удалось бы как самое прозрачное. Замена free будет только работать с выделенными "куче" "объектами".

6
задан Thomas Levesque 21 October 2009 в 08:54
поделиться

1 ответ

Так работает 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;
}

Поскольку вы лучше знаете свои данные, вы, вероятно, сможете придумать лучший способ сгенерировать хэш.

5
ответ дан 17 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: