List
new List
var carDiff =
(from c in myCars select c)
.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 и BMW:static void DisplayIntersection()
{
List
List
// Получить общие члены.
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.
}
}
Метод Union()
Yugo, Aztec, BMW и Saab:static void DisplayUnion()
{
List
new List
List
new List
// Получить объединение двух контейнеров.
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); // Выводит все общие члены.
}
}
Наконец, расширяющий метод Concat()
Yugo, Aztec, BMW, Saab и Aztec:static void DisplayConcat()
{
List
new List
List
new List
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
new List
List
new List
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);
}
}
Операции агрегирования LINQ
Запросы LINQ могут также проектироваться для выполнения над результирующим набором разнообразных операций агрегирования. Одним из примеров может служить расширяющий метод Count()
Average(), Мах(), Min() либо Sum() класса Enumerable. Вот простой пример:Here is a simple example:static void AggregateOps()
{