2014-10-31 51 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