Vorgehensweise: Suchen der Unterschiedsmenge zwischen zwei Listen (LINQ) (C#)How to: Find the Set Difference Between Two Lists (LINQ) (C#)

In diesem Beispiel wird veranschaulicht, wie Sie mit LINQ zwei Listen mit Zeichenfolgen vergleichen und die Zeilen ausgeben, die in names1.txt, aber nicht in names2.txt enthalten sind.This example shows how to use LINQ to compare two lists of strings and output those lines that are in names1.txt but not in names2.txt.

So erstellen Sie die DatendateienTo create the data files

  1. Kopieren Sie names1.txt und names2.txt in den Projektmappenordner, sowie in Vorgehensweise: Kombinieren und Vergleichen Zeichenfolgenauflistungen (LINQ) (C#).Copy names1.txt and names2.txt to your solution folder as shown in How to: Combine and Compare String Collections (LINQ) (C#).

BeispielExample

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  
     */  

Einige Arten der Abfragevorgänge in C# wie Except, Distinct, Union und Concat können nur in methodenbasierter Syntax ausgedrückt werden.Some types of query operations in C#, such as Except, Distinct, Union, and Concat, can only be expressed in method-based syntax.

Kompilieren des CodesCompiling the Code

Erstellen Sie ein neues Projekt, das auf die .NET Framework-Version 3.5 oder höher ausgelegt ist, mit einer Referenz zu System.Core.dll und using-Direktiven für System.Linq- und System.IO-Namespaces.Create a project that targets the .NET Framework version 3.5 or higher, with a reference to System.Core.dll and using directives for the System.Linq and System.IO namespaces.

Siehe auchSee Also

LINQ und Zeichenfolgen (C#)LINQ and Strings (C#)