2013-10-01 92 views
-2

我這是造成「序列中的多個值」它seems.This即數據重複lambda表達式是lambda表達式:複雜LAMBDA到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,lambda是用其他語法編寫的代表。 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事件探查器?

  • 在這條線上劃一個斷點。
  • 在以下行放置destinations.AsEnumerable()來強制SQL運行。
  • 運行該應用程序。
  • 當斷點命中運行啓動探查器跟蹤
  • 運行到了AsEnumerable()或等效線(即一,將強制SQL中產生和運行對SQL服務器)
  • 見什麼SQL Profiler拿起。