2013-10-01 4 views
-2

У меня есть выражение лямбда, которое вызывает «несколько значений в последовательности», т.е. дублирования данных это seems.This является лямбда-выражение:комплекс Лямбда для SQL

var destinations = this.contentBusiness.GetAllDisplayVersions() 
.Where(x => airportDestinations.Any(y => y.DestinationAirport.DestinationGuideId == x.ParentId)) 
.Select(x => new DestinationViewModel(airportDestinations.Single(y => y.DestinationAirport.DestinationGuideId == x.ParentId), x)); 

Теперь нужен соответствующий SQL заявление для это.

+0

Это называется linq, lambdas - это делегаты, написанные в другом синтаксисе. Lambda: '(x, y) => dostuff()' || Linq: 'list.Where (something) .Select (something)' – wudzik

+1

Вы создаете объекты (в основном, вызываете функции объекта) ... для этого нет эквивалента SQL. – JDB

+2

@ Cybȫʁgϟ37 хорошо, это сильно зависит от того, что возвращает 'GetAllDisplayVersions()'. Если он возвращает 'IEnumerable ' или 'List ' или 'DisplayVersion []', тогда: вы правы. Однако, если он возвращает 'IQueryable ', тогда это может быть полностью скомпонованный запрос (если он не через '.AsQueryable()'). Итак, к OP: что возвращает 'GetAllDisplayVersions()'? И как? –

ответ

0

Почему бы не запустить SQL Profiler?

  • Положите точку останова на эту строку.
  • В следующей строке введите destination.AsEnumerable(), чтобы заставить SQL запускаться.
  • Запуск приложения.
  • Когда хиты точки останова запуска запуском профилировщика Трейс
  • Выполнить к в AsEnumerable() или эквивалентной линии (то есть тот, который заставит SQL будет сгенерирован и запустить против SQL Server)
  • Посмотрите, что SQL Профайлер поднял трубку.
Смежные вопросы