Чернов Данил И-21

dpokatski 281b167fe1 lab13 8 months ago
lab01 9debbe9ebd lab12 10 months ago
lab02 9debbe9ebd lab12 10 months ago
lab03 9debbe9ebd lab12 10 months ago
lab04 9debbe9ebd lab12 10 months ago
lab05 9debbe9ebd lab12 10 months ago
lab06 9debbe9ebd lab12 10 months ago
lab07 9debbe9ebd lab12 10 months ago
lab08 9debbe9ebd lab12 10 months ago
lab09 9debbe9ebd lab12 10 months ago
lab10 b8046db1ec lab10 10 months ago
lab11 9c1751a445 lab11 10 months ago
lab12 9debbe9ebd lab12 10 months ago
lab13 281b167fe1 lab13 8 months ago
readme.md 281b167fe1 lab13 8 months ago

readme.md

Lab 13. Основы LINQ

Тема "Гостиничный бизнес"

исходный массив

string[] place = {"Дешевый номер", "Обычный номер", "Дорогой номер", "Номер люкс", "Апартаменты"};

список для результатов

var selectedPlace = new List<string>();

foreach(string s in place)
{
    // ищем слова начинающиеся на букву "А"
    if (s.ToUpper().StartsWith("А"))
        selectedPlace.Add(s);
}

сортируем получившийся список

selectedPlace.Sort();
 
foreach (string s in selectedPlace)
    Console.WriteLine(s);
Вывод:
Апартаменты
string[] place = {"Дешевый номер", "Обычный номер", "Дорогой номер", "Номер люкс", "Апартаменты"};
 
var selectedPlace = from t in place 
    where t.ToUpper().StartsWith("Н") //фильтрация по критерию
    orderby t  // упорядочиваем по возрастанию
    select t; // выбираем объект
 
foreach (string s in selectedPlace)
    Console.WriteLine(s);
Вывод:
Обычный номер

Методы расширения LINQ

string[] place = {"Дешевый номер", "Обычный номер", "Дорогой номер", "Номер люкс", "Апартаменты"};
 
var selectedPlace = place
    .Where(t=>t.ToUpper().StartsWith("Д"))
    .OrderBy(t => t);
 
foreach (string s in selectedPlace)
    Console.WriteLine(s);
Вывод:
Дешевый номер

Выборка сложных объектов

using System;
List<User> users = new List<User>
{
    new User {
        Name="Максим", 
        Age=17, 
       },
    new User {
        Name="Дмитрий", 
        Age=18, 
        },
    new User {
        Name="Милана", 
        Age=16, 
       },
    new User {
        Name="Георгий", 
        Age=22, 
        }
};
 
var selectedUsers = users.Where(u => u.Age > 16);

foreach (User user in selectedUsers)
    Console.WriteLine($"{user.Name} - {user.Age}");

public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
    
}
Вывод:
Максим - 17
Дмитрий - 18
Георгий - 22

Проекция

using System;
List<User> users = new List<User>
{
    new User {
        Name="Максим", 
        Age=17, 
       },
    new User {
        Name="Дмитрий", 
        Age=18, 
        },
    new User {
        Name="Милана", 
        Age=16, 
       },
    new User {
        Name="Георгий", 
        Age=22, 
        }
};
 
var items = users.Select(u => new { 
    FirstName = u.Name, 
    DateOfBirth = DateTime.Now.Year - u.Age 
});
 
foreach (var n in items)
    Console.WriteLine($"{n.FirstName} - {n.DateOfBirth}");
public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}
Вывод:
Максим - 2007
Дмитрий - 2006  
Милана - 2008
Георгий - 2002

Выборка из нескольких источников

using System;
List<User> users = new List<User>()
{
    new User {
        Name="Максим", 
        Age=17, 
       },
    new User {
        Name="Дмитрий", 
        Age=18, 
        },
    new User {
        Name="Милана", 
        Age=16, 
       },
    new User {
        Name="Георгий", 
        Age=22, 
        },
};
List<Place> places = new List<Place>()
{
    {"Дешевый номер", "Обычный номер", "Дорогой номер", "Номер люкс", "Апартаменты"};
    new Place
    {
        Mesto = "Дешевый номер",
        Price = 999,
    },
    new Place
    {
        Mesto = "Обычный номер",
        Price = 5000,
    },
    new Place
    {
        Mesto = "Дорогой номер",
        Price = 20000,
    },
    new Place
    {
        Mesto = "Номер люкс",
        Price = 100000,
    },
    new Place
    {
        Mesto = "Апартаменты",
        Price = 500000,
    },
};
 

var people = from user in users
    from place in places
    select new { Name = user.Name, Place = place.Mesto };
 
foreach (var p in people)
    Console.WriteLine($"{p.Name} - {p.Place}");
 
public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
    
}

public class Place
{
    public string Mesto { get; set; }
    public int Price { get; set; }
}
Вывод:
Максим - Дешевый номер
Максим - Обычный номер
Максим - Дорогой номер   
Максим - Номер люкс    
Максим - Апартаменты        
Дмитрий - Дешевый номер
Дмитрий - Обычный номер
Дмитрий - Дорогой номер
Дмитрий - Номер люкс
Дмитрий - Апартаменты
Милана - Дешевый номер
Милана - Обычный номер
Милана - Дорогой номер
Милана - Номер люкс
Милана - Апартаменты
Георгий - Дешевый номер
Георгий - Обычный номер
Георгий - Дорогой номер
Георгий - Номер люкс
Георгий - Апартаменты

Сортировка

using System;
List<User> users = new List<User>()
{
    new User {
    Name="Максим",
        Age=17,
},
    new User {
    Name="Дмитрий",
        Age=18,
},
    new User {
    Name="Милана",
        Age=16,
},
    new User {
    Name="Георгий",
        Age=22,
},
};
List<Place> places = new List<Place>()
{
    new Place
    {
        Mesto = "Дешевый номер",
        Price = 999,
    },
    new Place
    {
        Mesto = "Обычный номер",
        Price = 5000,
    },
    new Place
    {
        Mesto = "Дорогой номер",
        Price = 20000,
    },
    new Place
    {
        Mesto = "Номер люкс",
        Price = 100000,
    },
    new Place
    {
        Mesto = "Апартаменты",
        Price = 500000,
    },
};


var sortedUsers = users.OrderBy(u => u.Name);

foreach (User u in sortedUsers)
Console.WriteLine(u.Name);

public class User
{
    public string Name { get; set; }
public int Age { get; set; }

}

public class Place
{
    public string Mesto { get; set; }
public int Price { get; set; }
}
Вывод:
Дмитрий
Максим 
Милана
Георгий

Множественные критерии сортировки

using System;
List<User> users = new List<User>()
{
    new User {
        Name="Максим", 
        Age=17, 
       },
    new User {
        Name="Дмитрий", 
        Age=18, 
        },
   
    new User {
        Name="Георгий", 
        Age=22, 
        }, 
    new User {
                  Name="Милана", 
                  Age=16, 
                 },
};
List<Place> places = new List<Place>()
{
    new Place
    {
        Mesto = "Дешевый номер",
        Price = 999,
    },
    new Place
    {
        Mesto = "Обычный номер",
        Price = 5000,
    },
    new Place
    {
        Mesto = "Дорогой номер",
        Price = 20000,
    },
    new Place
    {
        Mesto = "Номер люкс",
        Price = 100000,
    },
    new Place
    {
        Mesto = "Апартаменты",
        Price = 500000,
    },
};
 

var result = users
    .OrderBy(u => u.Name)
    .ThenBy(u => u.Age);

foreach (User u in result)
    Console.WriteLine($"{u.Name} - {u.Age}");
 
public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
    
}

public class Place
{
    public string Mesto { get; set; }
    public int Price { get; set; }
}
Вывод:
Дмитрий - 18
Максим - 17 
Милана - 16
Георгий - 22