Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
LINQ-запрос к массиву данныхСодержание книги
Поиск на нашем сайте
LINQ-запрос представляет собой выражение, извлекающее данные из источника данных. Все операции запроса LINQ состоят из трех различных действий: получение источника (в нашем случае — это присвоение Начальных значений исходному массиву) данных, создание запроса (начинается с предложения from) и непосредственное выполнение запроса (обычно это цикл foreach). В данном разделе рассмотрим две задачи, первая — из массива имен извлекаем имена длиной шесть символов, записывая их или в список (коллекцию), или в новый массив. Другая -задача— из массива целых чисел выбираем только те, значения которых больше четырех, также записывая результат запроса в список или массив. Итак, запустим Visual Studio 2010, закажем новый проект шаблона Windows Forms Application С#. Затем из панели элементов перенесем в форму текстовое поле. Далее через щелчок правой кнопкой мыши перейдем к вкладке программного кода (листинг 19.1). Листинг 19.1. Извлечение данных из массивов // Решаем две задачи по выбору элементов из массива с помощью стандартных // запросов технологии LINQ using System; using System.Linq; using System.Windows.Forms; // Другие директивы using удалены, поскольку они не используются в данной программе namespace Linq1 { public partial class Form1: Form { public Form1() { InitializeComponent(); this.Text = "Технология LINQ"; textBox1.Multiline = true; // ЗАДАЧА 1: // Из массива имен выбрать имена с количеством букв равным шести, // вывести эти имена в текстовое поле TextBox в алфавитном порядке, при // этом все буквы перевести в верхний регистр. // Решение: string СтрокаИмен = "Витя Лариса Лариса Лена Андрей Женя " + "Александр Лариса Виктор Света Оксана Наташа"; // Из строки имен получаем массив имен, задавая в качестве сепаратора // деления подстрок символ пробела: string[] Имена = СтрокаИмен.Split(' '); // или проще: string[] Имена = // { "Витя", "Лариса", "Лариса", "Лена", "Андрей", "Женя", // "Александр", "Лариса", "Виктор", "Света", "Оксана", "Наташа" }; textBox1.Text = "ЗАДАЧА 1. В списке имен:\r\n\r\n"; foreach (string x in Имена) textBox1.Text = textBox1.Text + x + " "; // В результате LINQ-запроса получаем список имен с количеством букв // равным шести: var Запрос = from s in Имена where s.Length == 6 // - условие выбора orderby s // - сортировать в алфавитном порядке select s.ToUpper(); // - перевод в верхний регистр // s - это переменная диапазона схожа с переменной итерации в foreach // Удаляем элементы-дубликаты из списка имен: Запрос = Запрос.Distinct(); // Или таким образом: // Запрос = Запрос.Union(Запрос); textBox1.Text = textBox1.Text + "\r\n\r\n" + "выбираем имена с количеством букв равным шести, при " + "этом избавляемся от дублирования имен:\r\n\r\n"; foreach (string x in Запрос) // x - переменная итерации в цикле foreach textBox1.Text = textBox1.Text + x + " "; textBox1.Text = textBox1.Text + "\r\n\r\n"; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ЗАДАЧА 2: Из массива целых чисел X[] требуется выбрать числа, // значения которых >= 4, и записать эти числа в список Y, // отсортировав выбранные числа по возрастанию. // Решение: // Инициализация массива целых чисел: int[] X = { -2, 5, -23, 0, 7, -10, 11, 11, 14, 3, 8, 5, -5, 27, 8 }; textBox1.Text += "ЗАДАЧА 2. Из заданного массива X:\r\n\r\n"; foreach (int x in X) textBox1.Text = textBox1.Text + x + " "; textBox1.Text = textBox1.Text + "\r\n\r\nвыбираем числа, значения " + "которых >= 4 и записываем их в список (коллекцию) Y, " + "исключая элементы-дубликаты:\r\n\r\n"; // Y - это список, куда помещается выбранные элементы: var Y = from x in X where x >= 4 // - условие выбора orderby x // - сортируем по возрастанию select x; // Таким образом можно получить результат запроса в массив: // int[] Y = (from x in X // Здесь Y - это уже массив; // where x >= 4 // - условие выбора; // orderby x // - сортируем по возрастанию; // select x).ToArray(); // - преобразование списка в массив // Удаляем элементы-дубликаты из списка целых чисел: var Z = Y.Distinct(); // Или таким образом: // var Z = Y.Union(Y); // Вывод элементов списка Y в метку textBox1: foreach (var z in Z) textBox1.Text = textBox1.Text + z.ToString() + " "; } } } Как видно из программного кода, после присвоения массиву Имена начальных значений создаем запрос, который предусматривает выбор (select) из (from) массива Имена строк длиной (Length) ровно шесть символов (условие where). Запись выбранных имен выполняется в список Запрос с сортировкой списка в алфавитном порядке имен. Далее для удаления повторяющихся имен в списке используем функцию Distinct. В комментарии показано, как можно для этой же цели использовать функцию union, которая, вообще говоря, находит объединение двух множеств, т. е. выбирает в двух списках одинаковые элементы с удалением повторяющихся элементов. Поскольку мы объединяем два одинаковых списка, то получаем просто удаление повторяющихся элементов. Цикл foreach выводит список Запрос в текстовое поле textBox1. Следующая задача, решенная в данном программном коде, аналогична. Задан массив целых чисел X. Из этого массива выбираем в список Y элементы массива, значения которых больше или равны четырем. В комментарии показано, как можно записать результаты LINQ-запроса в массив. Удаление повторяющихся элементов в списке выполнено также с использованием функции Distinct. На рис. 19.1 приведен фрагмент работы программы.
Рисунок 19.1 - LINQ-запросы к массивам данных Убедиться в работоспособности программы можно, открыв решение Linq1.sln папки Linq1.
|
||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 395; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.154.237 (0.007 с.) |