Язык программирования C#9 и платформа .NET5
Часть 266 из 642 Информация о книге
.Except(from c2 in yourCars select c2);Console.WriteLine("Here is what you don't have, but I do:");foreach (string s in carDiff){Console.WriteLine(s); // Выводит Yugo.}}Метод
возвращает результирующий набор, который содержит общие элементы данных в наборе контейнеров. Например, следующий метод возвращает последовательность изIntersect()иAztec:BMWstatic void DisplayIntersection(){List<string> myCars = new List<String> { "Yugo", "Aztec", "BMW" };List<string> yourCars = new List<String> { "BMW", "Saab", "Aztec" };// Получить общие члены.var carIntersect =(from c in myCars select c).Intersect(from c2 in yourCars select c2);Console.WriteLine("Here is what we have in common:");foreach (string s in carIntersect){Console.WriteLine(s); // Выводит Aztec и BMW.}}Метод
возвращает результирующий набор, который включает все члены множества запросов LINQ. Подобно любому объединению, даже если общий член встречается более одного раза, повторяющихся значений в результирующем наборе не будет. Следовательно, показанный ниже метод выведет на консоль значенияUnion(),Yugo,AztecиBMW:Saabstatic void DisplayUnion(){List<string> myCars =new List<string> { "Yugo", "Aztec", "BMW" };List<string> yourCars =new List<String> { "BMW", "Saab", "Aztec" };// Получить объединение двух контейнеров.var carUnion =(from c in myCars select c).Union(from c2 in yourCars select c2);Console.WriteLine("Here is everything:");foreach (string s in carUnion){Console.WriteLine(s); // Выводит все общие члены.}}Наконец, расширяющий метод
возвращает результирующий набор, который является прямой конкатенацией результирующих наборов LINQ. Например, следующий метод выводит на консоль результатыConcat(),Yugo,Aztec,BMWиSaab:Aztecstatic void DisplayConcat(){List<string> myCars =new List<String> { "Yugo", "Aztec", "BMW" };List<string> yourCars =new List<String> { "BMW", "Saab", "Aztec" };var carConcat =(from c in myCars select c).Concat(from c2 in yourCars select c2);// Выводит Yugo Aztec BMW BMW Saab Aztec.foreach (string s in carConcat){Console.WriteLine(s);}}Устранение дубликатов
При вызове расширяющего метода
в результате очень легко получить избыточные элементы, и зачастую это может быть именно тем, что нужно. Однако в других случаях может понадобиться удалить дублированные элементы данных. Для этого необходимо просто вызвать расширяющий методConcat():Distinct()static void DisplayConcatNoDups(){List<string> myCars =new List<String> { "Yugo", "Aztec", "BMW" };List<string> yourCars =new List<String> { "BMW", "Saab", "Aztec" };var carConcat =(from c in myCars select c).Concat(from c2 in yourCars select c2);// Выводит Yugo Aztec BMW Saab.foreach (string s in carConcat.Distinct()){Console.WriteLine(s);}