Как найти определенный элемент в списке - PullRequest
1 голос
/ 30 октября 2019

Я хочу отфильтровать свои List, и если item уже существует , я не хочу добавлять это item к этому List. Вот почему я пытаюсь фильтровать по свойству item.

if(!(PolyLineList.Contains(PolyLineList.Find(x => x.item == item))))
{
    cPolyline currentPolyLine = new cPolyline(pointlist,item);
    PolyLineList.Add(currentPolyLine);
}

Когда item уже существует в PolyLineList, что равно item, он должен пропустить if заявление.

Ответы [ 3 ]

1 голос
/ 30 октября 2019

Вы можете захотеть изменить List<T> на HashSet<T> и просто Add (при условии, что PolyLine реализует Equals и GetHashCode методы для PolyLine сравниваемых экземпляров):

 //TODO: you, probably, want to rename PolyLineList into PolyLineSet or something 
 HashSet<cPolyline> PolyLineList = new HashSet<cPolyline>();

 ...

 PolyLineList.Add(currentPolyLine);
1 голос
/ 30 октября 2019

Используйте метод Линка Any:

if (!PolyLineList.Any(x => x.item == item))
{
    ...
}
0 голосов
/ 30 октября 2019

Предполагая, что тип item равен ItemType:

var itemSet = new HashSet<ItemType>();

...

if (itemSet.Add(item))
{ // item is unique
    PolyLineList.Add(new cPolyline(pointlist,item));
}
...