LinqPad — незаменимый инструмент .NET разработчика

Сегодня мне хочется рассказать про один очень интересный инструмент, а именно «LinqPad». Наверняка, многие с ним работают, но многие из моих знакомых не слышали о нём или не пытались его использовать. Если вы давно используете LinqPad, то в данной статье вы не найдёте ничего нового, а вот для тех, кто еще его не использует, она обязательна к прочтению.

Определение LinqPad на Wikipedia здесь https://ru.wikipedia.org/wiki/LINQPad

Сайт проекта: https://www.linqpad.net/


Окно приложения представляет из себя следующее

Как можно заметить, поддерживаются языки C#, VB, SQL, F#. Так что мы не ограничены каким-то одним языком и можно очень быстро писать различные запросы, в зависимости от задач.

Из названия можно догадаться, что LinqPad должен работать с LINQ. Это так, поддерживаются LINQ к объектам, LINQ к SQL, Entity Framework, LINQ к XML и PLINQ.

Приведу несколько сценариев, когда LinqPad бывает очень полезен:

1. Отладка отдельных частей большой программы.

Если у вас большой проект, компиляция и запуск которого может занимать далеко не 1 минуту, а вам нужно протестировать поведение отдельного алгоритма. Обычно в таком случае я создавал новый консольный проект в Visual Studio, в котором я отлаживал алгоритм. Используя LinqPad это можно сделать гораздо быстрее. LinqPad не такой тяжёлый как студия, однако, это далеко не простой блокнот, с подсветкой синтаксита, например, он может использовать как NuGet пакеты, так и добавление своих .dll

Загруженные из NuGet пакеты могут кэшироваться локально и в дальнейшем скачивать их заново необходимости не будет.

Сам процесс отладки очень удобный. Лично мне нравится расширение Dump().Которое выводит содержимое объекта в окно результата.

Для демонстрации, я написал функцию, реализующую сортировку «Пузырьком»

int[] BubbleSoft(int[] a)
{
	var nextIteration = true;
	while (nextIteration)
	{
		nextIteration = false;
		for (int i = 0; i < a.Count() - 1; i++)
		{
			if (a[i] > a[i + 1])
			{
				var buffer = a[i];
				a[i] = a[i + 1];
				a[i + 1] = buffer;
				nextIteration = true;
			}
		}
		String.Join("; ", a).Dump("Очередной проход по массиву");
	}
	return a;
}
void Main()
{
	var array = new int[] { 9, 1, 5, 2, 3, 7, 4 };
	var result = BubbleSoft(array);
	result.Dump("Финальный результат");
}


2. Различные операции с базами данных.

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

News.Where(x=>x.Images.Count() > 0).Take(10).Select(x => new {Title = x.Title, Image = Util.Image(x.Images.FirstOrDefault().FileContent)})

В выдаче я получу то, что мне нужно. При этом, я могу сохранить результат в нужном мне формате (Excel, Word или HTML) Саму выдачу, кстати, также можно кастомизировать, настраивая все параметры через обычный CSS.

Кроме того, используя LinqPad можно очень быстро манипулировать данными самой базы, не используя SQL. Вообще можно, конечно и SQL использовать, он, кстати, генерируется при каждом запросе к базе и его можно посмотреть, так получается гораздо быстрее и нагляднее.

3. Для любителей скриптов, которые должны выполнить некое действие.

Например, если нужно достать информацию из определённого файла, обработать её и записать в другой. Не нужно создавать отдельный проект, можно использовать LinqPad. Помимо всего прочего, любителям Win Forms (повторюсь, что можно использовать сторонние .dll) можно использовать все их возможности, например, сделать выбор нужного файла через диалог.

Для LinqPad имеется много примеров, реализованных из различных книг. Это, например, «С# in a Nutshell», «LINQ in Action», «Thinking In LINQ».

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

В общем, инструмент, действительно замечательный. Чтобы понять, насколько он может быть полезным, конечно, необходимо попробовать самому, так что всем рекомендую.
Приятного программирования.

Добавить комментарий