Глава 14. Введение в запросы LINQ
323
Console.WriteLine("\nОбщие элементы двух " +
"множеств:");
foreach (string s in carlntersect)
Console.WriteLine(s); // выведет Aztec и BMW
}
// Объединение массивов (из повторяющихся
// элементов выводится только один)
static void DisplayUnion ()
{
List myCars = new List { "Yugo",
"Aztec", "BMW" };
List yourCars = new List { "BMW",
"Saab", "Aztec" };
// Объединение двух контейнеров
var carUnion = (from c3 in myCars select c3)
.Union(from c3 in yourCars select c3);
Console.WriteLine("\nОбъединенное множество " +
"(без повторов):");
foreach (string s in carUnion)
Console.WriteLine (s); // Выведет все общие члены
Console.WriteLine();
}
// Полное объединение двух множеств (конкатенация)
static void DisplayConcat ()
{
List myCars = new List { "Yugo",
"Aztec", "BMW" };
List yourCars = new List { "BMW",
"Saab", "Aztec" };
// Получить сцепление содержимого двух контейнеров
var carConcat = (from c4 in myCars select c4)
.Concat(from c4 in yourCars select c4);
Console.WriteLine ("\nОбъединенное множество " +
"(с повторами — конкатенация):");
foreach (string s in carConcat)
Console.WriteLine (s);
}
// Исключение дублирования повторяющихся элементов
static void DisplayConcatNoDups ()
324
Часть II. Объектно-ориентированное программирование
{
List myCars = new List { "Yugo",
"Aztec", "BMW" };
List yourCars = new List { "BMW",
"Saab", "Aztec" };
var carConcat = (from с5 in myCars select с5)
.Concat(from c5 in yourCars select c5);
// Выведет Yugo Aztec BMW Saab.
Console.WriteLine ("\nИсключение повторов " +
"из конкатенации множеств:");
foreach (string s in carConcat.Distinct ())
Console.WriteLine (s);
}
// Различные примеры агрегации данных
static void AggregateOps ()
{
double[] winterTemps = {5.0, -17.3, 8, -4,
0, -10.6};
Console.WriteLine("\nМножество зимних температур:");
foreach(double t in winterTemps)
Console.Write("{0}\t",t);
// Различные примеры агрегации
// Выбрать максимальное значение из множества
// температур
Console.WriteLine("\nМаксимальная температура: {0}",
(from t in winterTemps select t).Max());
Console.WriteLine("Минимальная температура: {0}",
(from t in winterTemps select t).Min());
Console.WriteLine("Средняя температура: {0}",
(from t in winterTemps select t).Average ());
Console.WriteLine("Сумма всех температур: {0}",
(from t in winterTemps select t).Sum());
}
static void Main()
{
Console.WriteLine("Работа с множествами и " +
"агрегация данных множества");
DisplayDiff();
Do'stlaringiz bilan baham: |