Проверка наличия объекта диапазона в списке - PullRequest
0 голосов
/ 15 января 2020

Я создал список объектов Range в C#

private List<Excel.Range> _dataCells = new List<Excel.Range>();

Если в настоящее время я добавляю диапазон к списку, используя следующее:

if (_dataCells.Contains(_excel.Selection) == false)
{
    _dataCells.Add(_excel.Selection);
}

Это заканчивается Список с дублирующимися значениями. Как я могу использовать метод Contains в списке сложных типов?

1 Ответ

1 голос
/ 15 января 2020

Вместо использования функции Contains вы можете использовать функцию All и проверить соответствующие свойства, чтобы определить, является ли это существующим элементом.

if (_dataCells.All(x => x.Selection.Property != _excel.Selection.Property))
{
    _dataCells.Add(_excel.Selection);
}

Другой способ решить эту проблему - это реализовать функцию Equals. См. здесь для более подробного объяснения.

public class Selection : IEquatable<Selection>
{
    ...

    public override bool Equals(Selection selection)
    {
        return selection != null && this.Property == selection.Property;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...