Как включить элементы groupby () в select () в linq to SQL queryi...
У меня есть запрос Linq to sql:
IEnumerable<PY_History_TransactionTAB> FilteredReport; var ReportData = db.PY_History_TransactionTAB.AsEnumerable() .Where(x => x.SystemCode == SysCode) .GroupBy(x => new { x.EmployeeCode, x.EmployeeMaster.Emp_FullName, x.Designations.Title, department = x.Departments.Title }); FilteredReport = ReportData.Select(x => new PY_History_TransactionTAB { EmployeeCode = x.Key.EmployeeCode, H_SalaryDays = x.Sum(y => y.H_SalaryDays ?? 0), H_NET_Overtime = x.Sum(y => y.H_NET_Overtime), H_Overtime_Amount = x.Sum(y => y.H_Overtime_Amount), H_SL_Breakup1 = x.Sum(y => y.H_SL_Breakup1 ?? 0), H_OT_Allowance1 = x.Sum(y => y.H_OT_Allowance1 ?? 0), }).ToList();
Теперь, если я хочу добавить член GroupBy x. EmployeeCode в Select (), он принимает его и работает нормально, но я не знаю, как включить навигационное свойство x.EmployeeMaster.Emp_FullName в Select (), которое является следующим членом GroupBy (). Я знаю, что модель PY_History_TransactionTAB, на которую я ссылаюсь в Select (), не содержит определения для Emp_FullName, но она содержит определение для навигационного свойства, т. е. EmployeeMaster.
Итак, есть ли способ включить навигационное свойство x.EmployeeMaster.Emp_FullName в Select (), чтобы я мог получить доступ к ним в строго типизированном представлении?
Итак, мой вопрос заключается в том, как мне изменить свой запрос linq to sql, чтобы получить правильное представление результата?
Что я уже пробовал:
Я не знаю, как это сделать в c#, я попытался поместить свойство navigation в select (), и оно говорит, что PY_History_TransactionTAB не содержит определения Emp_FullName.
Richard Deeming
Не стал бы x.Key.Emp_FullName
работа?
Member 12286283
Это правильно, но как я могу положить его в выберите() в качестве параметра, для employeecode я могу сказать : EmployeeCode = х.Ключ.EmployeeCode, это точно, но насчет Emp_FullName, я могу открыть его так, как вы сказали, но где я должен назначить его, PY_HistoryTransactionTAB только не содержит определение для "EmployeeMaster", которая сама по себе не столбец, но свойство навигации на другой стол.
Richard Deeming
В этом и заключается проблема повторного использования класса сущностей в качестве DTO - если он не соответствует структуре данных, которые вы хотите вернуть, вам придется прыгать через обручи, чтобы заставить его работать.
Попробуй: EmployeeMaster = x.First().EmployeeMaster
Member 12286283
Идеально! Это то решение, которое я искал, большое вам спасибо :) не могли бы вы изложить его как решение НИЖЕ, чтобы я мог принять его как ответ.