C# - Linq überprüfen, ob eine Liste enthält alle anderen Listen-Elemente beim Vergleich auf eine Eigenschaft

Lerne ich Linq und ich habe zwei Objekt-Listen. Ich möchte vergleichen, eine dieser Listen gegen die anderen, um zu sehen, wenn man von den Eigenschaften der Objekte innerhalb der it abgestimmt werden können, um diejenigen, die in der anderen Liste.
So, ich code für die, aber ich will es ändern, um Linq-Ausdrücke.

        var list1 = new List<Product>
        {
            new Product{SupplierId = 1,ProductName = "Name1"},
            new Product{SupplierId = 2,ProductName = "Name2"},
            new Product{SupplierId = 3,ProductName = "Name3"},
            new Product{SupplierId = 4,ProductName = "Name4"}
        };
        var list2 = new List<Product>
        {
            new Product {SupplierId = 1,ProductName = "Name5"},
            new Product {SupplierId = 4,ProductName = "Name6"}
        };

    private static bool CheckLists(List<Product> list1, List<Product> list2)
    {
        foreach (var product2 in list2)
        {
            bool result = false;
            foreach (var product in list1)
            {
                if (product.SupplierId == product2.SupplierId)
                {
                    result = true;
                    break;
                }
            }
            if (!result)
            {
                return false;
            }
        }
        return true;
    }

Wie kann ich es mit Linq ?

  • Gibt es irgendein Grund Sie nicht mit Contains?
  • Für die Verwendung Contains sollte er überschreiben Equals
  • Für zusätzliche Klarheit, für alle, die dies Lesen, anschließend die Prüfung getan wird, ob alle Elemente in list2 gefunden werden können, die in list1.
InformationsquelleAutor | 2017-11-21
Schreibe einen Kommentar