Сколько трюков с запросами данных C# вы знаете? :)

Когда у нас есть большой проект C#, мы вскоре начинаем манипулировать большим количеством данных. Эти данные могут поступать из разных источников: они могут быть написаны разработчиками от руки, извлечены из базы данных, получены из онлайн-URL… Поскольку все эти источники могут иметь разные соглашения, вы можете в конечном итоге получить некоторые широко разные форматы данных.

Теперь предположим, что вы хотите прочитать этот список стран, который вы получили в сети, отфильтровав по континентам; или вы хотите получить все продукты в вашей базе данных PostgreSQL, имена которых начинаются с «Tom»; или вы хотите получить статическую переменную, которую написали ваши коллеги, чтобы определить настройки приложения и проверить, имеет ли какое-либо из этих значений значение null.

На первый взгляд кажется, что эти задачи чрезвычайно сложно сгруппировать в похожие процессы. Поскольку данные имеют разную форму, естественно, будет невозможно стандартизировать их исследование, не так ли?

Что ж, именно в таких ситуациях вы можете использовать очень крутой инструмент C#: Linq! Итак, сегодня давайте взглянем на эту систему и посмотрим, как она может помочь нам упростить получение данных или преобразовать данные из одного формата в другой :)

Введите языковой интегрированный запрос (LINQ)

Вся суть Linq заключается в том, чтобы предоставить разработчикам C# декларативный синтаксис запросов, который позволяет им анализировать и искать данные, используя знакомые им объекты: классы, методы, события и т. д.

Примечание: несмотря на то, что запросы Linq довольно хорошо справляются с выводом типов во время компиляции, они основаны на универсальных типах — если вы хотите узнать о них больше, прочтите одну из других моих статей о обобщенных типах в C# ;)

Помимо упрощения выборки и фильтрации, Linq также очень полезен для преобразования данных с одного языка на другой. Благодаря этому промежуточному «нормализатору» вы можете взять некоторую информацию из базы данных SQL и записать ее в XML-файл, и все это в одном запросе! Вы также можете легко переназначить некоторые данные, то есть преобразовать исходные данные в новый набор данных, по одному элементу за раз (здесь я говорю о таких картах, как парадигма карта/фильтр/сокращение, которая очень распространена в JavaScript, например).