【发布时间】:2016-09-29 19:52:28
【问题描述】:
我有一个 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();
现在,如果我想在 Select() 中添加 GroupBy 成员 x.EmployeeCode,它需要它,并且工作正常,但我不知道如何将导航属性 x.EmployeeMaster.Emp_FullName 包含到 Select() 中,这是 GroupBy() 的下一个成员。我知道我在 Select() 中引用的模型 PY_History_TransactionTAB 不包含 Emp_FullName 的定义,但它包含导航属性的定义,即 EmployeeMaster。
那么,有没有办法在 Select() 中包含导航属性 x.EmployeeMaster.Emp_FullName,以便我可以在强类型视图中访问它们?
为方便起见,以下是我的视图:
@model IEnumerable<HrAndPayrollSystem.Models.PY_History_TransactionTAB>
<tr>
<th>
@Html.DisplayNameFor(model => model.EmployeeCode)
</th>
<th>
@Html.DisplayNameFor(model => model.Departments.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.EmployeeMaster.Emp_FullName)
</th>
<th>
@Html.DisplayNameFor(model => model.Designations.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.H_SalaryDays)
</th>
.
.
. // Other Elements
</tr>
在上面的视图中,我可以访问model.EmployeeCode,但我无法访问的是model.EmployeeMaster.Emp_FullName 和类似的其他导航属性。
那么,我的问题是如何修改我的 linq to sql 查询以获得正确的结果视图?
【问题讨论】:
-
您是指
x.Key.Emp_FullName部分? -
@JonHanna,没错,是的,包括其他导航属性
x.Key .Title和x.Key.department,如何添加所有此类属性?