Nonpacie
@Nonpacie

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

Имеется абстрактный класс Shape, и три наследника Square, Circle, Triangle. Создал List в который будут помещаться какие-то фигуры. Столкнулся с тем что нужно написать метод для удаления элементов из списка по их типу. Пользователь вводит например: Circle и все элементы типа Circle удаляются из списка. Пробовал через LINQ что-то наклацать, ничего не вышло. Прошу подсказки!
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
@justmavi
Software Development Engineer at Softconstruct
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
list = list.Where(x=>x.GetType() != typeof(Circle)).ToList()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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