2015-09-29 127 views
-3

我對C#中的LINQ很新穎。我如何使用查詢語法重寫以下內容?查詢語法的C#方法語法

var jobs = 
      context.Job 
      .Include(j => j.PlannedJobStopDetails 
       .Select(jsd => jsd.PlannedTravelStop) 
      ) 
      .Where(
       j => j.DateUpdated >= dateFrom && j.DateUpdated <= dateTo && 
        j.PlannedJobStopDetails.Any(
        jsd => jsd.DateUpdated >= dateFrom && jsd.DateUpdated <= dateTo 
         && jsd.PlannedTravelStop.PlannedTravelStopStatus == status 
        ) 
      ); 

我使用實體框架和我想在LINQPad

運行查詢
+3

對於其中的一些,你不能。你爲什麼想要? – Rawling

+0

類似'從上下文中的j.Job.Include(...)其中...選擇j'?你有什麼嘗試? – CodeCaster

+0

@Rawling我想在LINQPad中運行查詢 –

回答

1

設置語言爲C#語句,然後使用jobs.Dump();獲得結果?

var jobs = 
     context.Job 
     .Include(j => j.PlannedJobStopDetails 
      .Select(jsd => jsd.PlannedTravelStop) 
     ) 
     .Where(
      j => j.DateUpdated >= dateFrom && j.DateUpdated <= dateTo && 
       j.PlannedJobStopDetails.Any(
       jsd => jsd.DateUpdated >= dateFrom && jsd.DateUpdated <= dateTo 
        && jsd.PlannedTravelStop.PlannedTravelStopStatus == status 
       ) 
     ); 
jobs.Dump(); // execute the query in linqpad and dump results. 

更多信息添加

所有你在LinqPad編寫的代碼將獲得包含一個名爲UserQuery類中。此外,您選擇的連接中可用的所有表格/視圖都將在此生成的UserQuery類中提供。

使用context.並不是真的需要。但是因爲您使用了實際的c#應用程序中的複製粘貼,所以您可以使用以下技巧來運行粘貼的查詢。

您在查詢之前在linqpad添加以下代碼:

var context = this; 

您查詢的另一種辦法是將LinqPad語言選項返回C#表達,只是編寫查詢,而不context和最後是.Dump();。像這樣...

Job 
.Include(
    j => j.PlannedJobStopDetails.Select(jsd => jsd.PlannedTravelStop) 
) 
.Where(
    j => j.DateUpdated >= dateFrom && j.DateUpdated <= dateTo && 
     j.PlannedJobStopDetails.Any(
      jsd => jsd.DateUpdated >= dateFrom && jsd.DateUpdated <= dateTo 
       && jsd.PlannedTravelStop.PlannedTravelStopStatus == status 
     ) 
) 
+0

它給出錯誤「名稱上下文」在當前上下文中不存在「 –

+0

爲您添加了有關LinqPad的附加信息。 – Dbuggy