Usuwanie element z listy obiektów A na podstawie obiektów z listy B

0

Mam listy:

List<ObjectA>
List<ObjectB>

Oba typy obiektow, posiadają ten sam prop. Nazwijmy go id.

Jak powinna wyglądać konstrukcja LINQ aby z listy A usunąć elementy z tym samym id z listy B.

List<A>.RemoveAll(x => x.Contains(List<B>))

nie zadziała ze względu na różne obiekty.

3

Może?

listA.Select(q => q.Id).Except(listB.Select(q => q.Id));
1

Poprzedni post usunąłem, bo były tam dwie listy identycznych obiektów
Tak można:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ForProg
{
    class Element
    {
        public int Id { get; set; }
        public Element(int id)
        {
            this.Id = id;
        }
    }

    class Entity
    {
        public int Id { get; set; }
        public Entity(int id)
        {
            this.Id = id;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var first = new List<Element> { new Element(1), new Element(2), new Element(3), new Element(4) };
            var second = new List<Entity> { new Entity(2), new Entity(3) };

            first.RemoveAll(f => second.FirstOrDefault(s => s.Id == f.Id) != null);
            first.ForEach(f => Console.WriteLine(f.Id));
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1