Sin descripción

abolshakova 53428b3021 Обновить 'README.md' hace 8 meses
.idea 9aa2478eee first commit hace 8 meses
t6_linq 9aa2478eee first commit hace 8 meses
README.md 53428b3021 Обновить 'README.md' hace 8 meses
t6_linq.sln 9aa2478eee first commit hace 8 meses

README.md

LINQ

Основы LINQ

1

// исходный массив
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);

Вывод:

Бульвар

2

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 = 3999,
    },
    new Place
    {
        Mesto = "набережная",
        Price = 199,
    },
    new Place
    {
        Mesto = "бульвар",
        Price = 598,
    },
    new Place
    {
        Mesto = "шарага",
        Price = 10,
    },
    new Place
    {
        Mesto = "КБ",
        Price = 9999,
    },
};
 

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 = 3999,
    },
    new Place
    {
        Mesto = "набережная",
            Price = 199,
    },
    new Place
    {
        Mesto = "бульвар",
            Price = 598,
    },
    new Place
    {
        Mesto = "шарага",
            Price = 10,
    },
    new Place
    {
        Mesto = "КБ",
            Price = 9999,
    },
};


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 = 3999,
    },
    new Place
    {
        Mesto = "набережная",
        Price = 199,
    },
    new Place
    {
        Mesto = "бульвар",
        Price = 598,
    },
    new Place
    {
        Mesto = "шарага",
        Price = 10,
    },
    new Place
    {
        Mesto = "КБ",
        Price = 9999,
    },
};
 

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