Мне нужно выбрать все элементы из набора, свойство Id которого содержится во втором наборе.Можно ли использовать «SelectMany ()» для этого?Какое наиболее эффективное / лучшее решение для этого типа проблемы сопоставления.
Пример : Выберите все DateRangeIds для данного ReportId посредством набора объединяющихся объектов.
Наборы :
- Отчеты {ReportId, ReportName}
- ReportDateRanges {DateRangeId, ReportId, ReportDateRangeId}
- DateRanges {DateRangeId, DateRangeName}
Вот код моего решения.Я не уверен, что это правильный подход, но это решает проблему, которую я описал:
var report = Reports.Take(1).FirstOrDefault();
int reportId = Convert.ToInt32(report.Id);
var dateRangeIds = ReportDateRanges.Where(rdr => rdr.ReportId == reportId).OrderBy(it => it.DateRangeId).Select(it => it.DateRangeId);
var dateRanges = DateRanges.Where(dateRange => dateRangeIds.Contains(dateRange.Id));
Эксперты LINQ, пожалуйста, не стесняйтесь критиковать этот код и предлагать любые предложения.Спасибо за помощь!