2014-10-31 52 views
0

爲了僅通過聚合根來訪問子對象,我正在努力考慮有效的方法來選擇正確的數據。我可以重寫以下更有效/簡潔嗎?如何通過LINQ高效地選擇子對象

 var jobReport = db.Jobs 
      .Where(j => j.JobReports.Any(jr => jr.ReportId == reportId)) 
      .Select(j => j.JobReports.Single(jr => jr.ReportId == reportId)) 
      .Single(); 
+0

你想選擇一個作業或JobReport?如果JobReport,你爲什麼不做一些像'db.JobReports.Single(x => x.ReportId == reportId)'? – 2014-10-31 09:55:03

+0

JobReport。我不想通過db.JobReports訪問它,因爲它不是一個聚合根實體。 – Korijn 2014-10-31 09:58:53

回答

3

你寫的將相當於:

var jobReport = db.Jobs.SelectMany(j => j.JobReports) 
         .Single(jr => jr.ReportId == reportId); 
+2

沒有'reportId'的過濾器? – Corak 2014-10-31 09:54:55

+0

我看不懂,謝謝 - 修正。 – decPL 2014-10-31 09:55:35

+1

啊,所以這是SelectMany的目的:)謝謝! – Korijn 2014-10-31 09:59:27