Тем не менее, трюк заключается в том, что выражение запроса может использоваться для взаимодействия с разнообразными типами данных — даже с теми, которые не имеют ничего общего с реляционными базами данных. Строго говоря, LINQ представляет собой термин, в целом описывающий сам подход доступа к данным. Однако в зависимости от того, где применяются запросы LINQ, вы встретите разные обозначения вроде перечисленных ниже.
•
•
•
•
В настоящее время LINQ является неотъемлемой частью библиотек базовых классов .NET Core, управляемых языков и самой среды Visual Studio.
Выражения LINQ строго типизированы
Важно также отметить, что выражение запроса LINQ (в отличие от традиционного оператора SQL)
Основные сборки LINQ
Для работы с LINQ to Objects вы должны обеспечить импортирование пространства имен System.Linq
using:using System.Linq;
Применение запросов LINQ к элементарным массивам
Чтобы начать исследование LINQ to Objects, давайте построим приложение, которое будет применять запросы LINQ к разнообразным объектам типа массива. Создайте новый проект консольного приложения под названием LinqOverArray
Program статический вспомогательный метод по имени QueryOverStrings(). Внутри метода создайте массив типа string, содержащий несколько произвольных элементов (скажем, названий видеоигр). Удостоверьтесь в том, что хотя бы два элемента содержат числовые значения и несколько элементов включают внутренние пробелы:static void QueryOverStrings()
{
// Предположим, что есть массив строк.
string[] currentVideoGames = {"Morrowind", "Uncharted 2",
"Fallout 3", "Daxter", "System
Shock 2"};}
Теперь модифицируйте файл Program.cs
QueryOver Strings():Console.WriteLine("***** Fun with LINQ to Objects *****\n");
QueryOverStrings();
Console.ReadLine();
При работе с любым массивом данных часто приходится извлекать из него подмножество элементов на основе определенного критерия. Возможно, требуется получить только элементы, которые содержат число (например, "System Shock 2", "Uncharted 2" и "Fallout 3"), содержат заданное количество символов либо не содержат встроенных пробелов (скажем, "Morrowind" или "Daxter"). В то время как такие задачи определенно можно решать с использованием членов типа System.Array
Исходя из предположения, что из массива нужно получить только элементы, содержащие внутри себя пробел, и представить их в алфавитном порядке, можно построить следующее выражение запроса LINQ:
static void QueryOverStrings()
{
// Предположим, что имеется массив строк.
string[] currentVideoGames = {"Morrowind", "Uncharted 2",
"Fallout 3", "Daxter", "System
Shock 2"}; // Построить выражение запроса для нахождения
// элементов массива, которые содержат пробелы.
IEnumerable
from g in currentVideoGames
where g.Contains(" ")
orderby g
select g;
// Вывести результаты.
foreach (string s in subset)
{
Console.WriteLine("Item: {0}", s);
}
}