---
title: "Самый простой способ увидеть выражение LINQ to SQL в виде классического T-SQL-запроса."
description: "У меня была задача, перевести все выражения LINQ to SQL, в обычный классический язык запросов T-SQL...."
author: "tarakanoffth"
published: "2010-09-03T04:57:32+00:00"
modified: "2010-09-03T04:57:32+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/samyy-prostoy-sposob-uvidet-vyrazhenie-linq-to-sql-v-vide-klassicheskogo-t-sql-zaprosa-69574"
markdown_url: "https://yvision.kz/post/samyy-prostoy-sposob-uvidet-vyrazhenie-linq-to-sql-v-vide-klassicheskogo-t-sql-zaprosa-69574/markdown"
site_name: "Yvision.kz"
---

# Самый простой способ увидеть выражение LINQ to SQL в виде классического T-SQL-запроса.

> У меня была задача, перевести все выражения LINQ to SQL, в обычный классический язык запросов T-SQL....

У меня была задача, перевести все выражения LINQ to SQL, в обычный классический язык запросов T-SQL.

На форумах, в основном, предлагали вытаскивать текст запроса, через создание объекта класса IQueryable, а затем обращаться к его свойствам или очень громоздкое решение в виде SQL-профайлера (перехватывать запросы на SQL-сервере).

Оказалось, что в отладчике Visual Studio для этого есть всё необходимое.

Допустим, у нас есть вот такое выражение LINQ to SQL:

> var query = from s in context.oxite_Subscriptions join sa in context.oxite_SubscriptionAnonymous on s.SubscriptionID equals sa.SubscriptionID into outer from o in outer.DefaultIfEmpty() join u in context.oxite_Users on s.UserID equals u.UserID where s.PostID == post.ID select s;

Запускаем этот код на выполнение в отладчике Visual Studio и добавляем переменную "query" в список контрольных значений. "Прогоняем" переменную, присваивая ей результат LINQ to SQL-выражения. И видим, что в списке контрольных значений, переменная "query" имеет значение...в виде текста запроса на классическом T-SQL:

> SELECT [t4].[PostID] AS [ID], [t2].[test], [t2].[SubscriptionID], [t2].[Name], [t2].[Email], [t3].[UserID], [t3].[Username], [t3].[DisplayName], [t3].[Email] AS [Email2], [t3].[HashedEmail], [t3].[Password], [t3].[PasswordSalt], [t3].[DefaultLanguageID], [t3].[Status], [t0].[SubscriptionID] AS [ID2] FROM [dbo].[oxite_Subscription] AS [t0] LEFT OUTER JOIN ( SELECT 1 AS [test], [t1].[SubscriptionID], [t1].[Name], [t1].[Email] FROM [dbo].[oxite_SubscriptionAnonymous] AS [t1] ) AS [t2] ON [t0].[SubscriptionID] = [t2].[SubscriptionID] INNER JOIN [dbo].[oxite_User] AS [t3] ON [t0].[UserID] = [t3].[UserID] INNER JOIN [dbo].[oxite_Post] AS [t4] ON [t4].[PostID] = [t0].[PostID] WHERE [t0].[PostID] = @p0

Конечно, этот T-SQL предназначен для СУБД MS SQL, но доработка до стандартного SQL, уже не представляет большой сложности.

---

Source: [https://yvision.kz/post/samyy-prostoy-sposob-uvidet-vyrazhenie-linq-to-sql-v-vide-klassicheskogo-t-sql-zaprosa-69574](https://yvision.kz/post/samyy-prostoy-sposob-uvidet-vyrazhenie-linq-to-sql-v-vide-klassicheskogo-t-sql-zaprosa-69574)