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