@Nonpacie

Как удалить элемент списка по его типу?

Имеется абстрактный класс Shape, и три наследника Square, Circle, Triangle. Создал List в который будут помещаться какие-то фигуры. Столкнулся с тем что нужно написать метод для удаления элементов из списка по их типу. Пользователь вводит например: Circle и все элементы типа Circle удаляются из списка. Пробовал через LINQ что-то наклацать, ничего не вышло. Прошу подсказки!
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
@hovsepyann
Студент YSCI
static class Extensions
{
	public static IEnumerable<TSource> Remove<TSource>(this IEnumerable<TSource> collection, Predicate<TSource> predicate)
	{
		foreach(TSource item in collection)
		{
			 if(!predicate?.Invoke(item)) yield return item;
		}		
	}
}

class Program
{
    public static void Main()
    {
        IEnumerable<Shape> shapes = new List<Shape> { new Square(), new Triangle(), new Circle(), new Circle() };
        foreach(var shape in shapes.Remove(t => t.GetType() == typeof(Circle)))
        {
	         Console.WriteLine(shape.GetType()); // Square, Triangle
        }
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vabka Куратор тега C#
Токсичный
list = list.Where(x=>x.GetType() != typeof(Circle)).ToList()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ЭЛКОМ+ Москва
от 70 000 до 165 000 ₽
deeplay Новосибирск
от 130 000 до 200 000 ₽
от 3 500 до 4 000 $
21 янв. 2021, в 14:45
3000 руб./за проект
21 янв. 2021, в 14:41
8000 руб./за проект