LINQ-запросы и лямбда-выражения
Автор: Светка Сушнинова • Март 14, 2019 • Реферат • 3,321 Слов (14 Страниц) • 500 Просмотры
Практическая работа LINQ-запросы и лямбда-выражения
Реализация классов может предусматривать наличие конструктора с параметрами (в зависимости от вида запросов), но может быть выполнена с помощью свойств в форме {get; set;}.
Разрабатываемое приложение должно обрабатывать не менее шести запросов. Два запроса студент должен добавить самостоятельно. Запросы выполняются в форме LINQ to Objects. Тексты запросов на русском языке должны представляться на экране в виде списка, и каждый из запросов может быть выбран посредством выбора номера его позиции в списке. После выполнения запроса на экран снова выводится список для выбора другого запроса. Кроме запросов должны формироваться отчеты и справки.
Должны быть предусмотрены позиции для добавления и удаления и сохранения строк списка. Одна из позиций в списке должна обеспечивать «нормальный» выход из программы.
Краткие теоретические пояснения
Файлы создают в Приложении «Блокнот». Строковые данные в кавычки не заключают. Все данные для одного объекта записывают в одной строке.
Пример оформления строк:
Помидор;83,5;1
Огурец;65;2
Морковь;35,2;3
В РФ дробная часть отделяется от целой с помощью запятой, поэтому для разграничения элементов при считывании их из файлов нельзя применять запятую. Можно применять пробел (если нет строк, состоящих из нескольких слов), точку с запятой и т. д.
При запуске приложения на экран выводится список задач с их названием. Для вывода списка задач, а также для реализации каждой задачи в списке (включая добавление и удаление элементов) оформляется подпрограмма. Ниже представлен пример (названия пунктов 1, 2 и остальных (до 8)):
[pic 1]
Главная программа имеет вид (все подпрограммы обработки запросов должны иметь атрибут static.):
static void Main(string[ ] args)
{
int n = -1;
while (true)
{
Frame(); // Вывод списка для выбора запроса
if (! int.TryParse(Console.ReadLine(), out n))
{
Console.WriteLine("Это не цифра, нажмите на Enter");
Console.ReadLine();
Console.Clear();
continue;
}
switch (n)
{
case 1:
Console.Clear();
// Вызов подпрограммы реализации запроса для позиции 1
Console.WriteLine("Обработка запроса окончена,
нажмите любую клавишу");
Console.ReadKey();
Console.Clear();
continue;
// Обработка других запросов
case 9:
Console.WriteLine("Выход из программы: набрать - да,
нет - любые символы ");
string st = Console.ReadLine();
if (st == "да") Environment.Exit(0);
else
{
Console.Clear();
continue;
}
continue; // Без этого оператора возникает ошибка
default: // Ошибка набора номера
Console.Clear();
Console.WriteLine("Введенного № нет, нажмите клавишу");
Console.ReadKey();
Console.Clear();
continue;
}
}
}
Пусть класс имеет представленный ниже вид:
public class Vegetable // Овощи
{
public string name {get; set;}
public int barcode {get; set;}
public double price {get; set;}
}
Ниже приведен пример формирования обобщенного списка для одного класса.
class Program
{
static void Main(string[ ] args)
{
List
StreamReader FileIn = new StreamReader("C:\\ List.txt", Encoding.Default);
Vegetable item = new Vegetable();// Пустой объект Vegetable
string [ ] ms = new string[3];
string str;
while ((str = FileIn.ReadLine()) != null) // Пока не конец файла
{
ms = str.Split(';'); // Расщепление на массив строк
item.name=ms[0]; // Формирование объекта Vegetable
...