Freigeben über


Gewusst wie: Suchen der festgelegten Differenz zwischen zwei Listen (LINQ)

Dieses Beispiel zeigt, wie LINQ verwendet wird, um zwei Zeichenfolgenlisten zu vergleichen und die Zeilen anzugeben, die in names1.txt, aber nicht in names2.txt enthalten sind.

So erstellen Sie die Datendateien

Beispiel

Class CompareLists

    Shared Sub Main()

        ' Create the IEnumerable data sources. 
        Dim names1 As String() = System.IO.File.ReadAllLines("../../../names1.txt")
        Dim names2 As String() = System.IO.File.ReadAllLines("../../../names2.txt")

        ' Create the query. Note that method syntax must be used here. 
        Dim differenceQuery = names1.Except(names2)
        Console.WriteLine("The following lines are in names1.txt but not names2.txt")

        ' Execute the query. 
        For Each name As String In differenceQuery
            Console.WriteLine(name)
        Next 

        ' Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.")
        Console.ReadKey()
    End Sub 
End Class 
' Output: 
' The following lines are in names1.txt but not names2.txt 
' Potra, Cristina 
' Noriega, Fabricio 
' Aw, Kam Foo 
' Toyoshima, Tim 
' Guy, Wey Yuan 
' Garcia, Debra
class CompareLists
{        
    static void Main()
    {
        // Create the IEnumerable data sources. 
        string[] names1 = System.IO.File.ReadAllLines(@"../../../names1.txt");
        string[] names2 = System.IO.File.ReadAllLines(@"../../../names2.txt");

        // Create the query. Note that method syntax must be used here.
        IEnumerable<string> differenceQuery =
          names1.Except(names2);

        // Execute the query.
        Console.WriteLine("The following lines are in names1.txt but not names2.txt");
        foreach (string s in differenceQuery)
            Console.WriteLine(s);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit");
        Console.ReadKey();
    }
}
/* Output:
     The following lines are in names1.txt but not names2.txt
    Potra, Cristina
    Noriega, Fabricio
    Aw, Kam Foo
    Toyoshima, Tim
    Guy, Wey Yuan
    Garcia, Debra
     */
    

Bestimmte Arten von Abfrageoperationen sowohl in C# als auch in Visual Basic, wie zum Beispiel Except``1, Distinct``1, Union``1 und Concat``1, können nur in methodenbasierter Syntax ausgedrückt werden.

Kompilieren des Codes

  • Erstellen Sie ein Visual Studio-Projekt für die .NET Framework-Version 3.5. Standardmäßig weist das Projekt einen Verweis auf System.Core.dll und eine using-Direktive (C#) oder eine Imports-Anweisung (Visual Basic) für den System.Linq-Namespace auf. Fügen Sie in C#-Projekten eine using-Direktive für den System.IO-Namespace hinzu.

  • Kopieren Sie diesen Code ins Projekt.

  • Drücken Sie F5, um das Programm zu kompilieren und auszuführen.

  • Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen.

Siehe auch

Konzepte

LINQ und Zeichenfolgen