C# 数据服务查询扩展相关扩展

C# 数据服务查询扩展相关扩展,c#,wcf-data-services,C#,Wcf Data Services,假设一个公司有多个员工s,而每个员工又有多个考勤记录s 使用DataServiceQuery我可以包括所有公司的所有员工: dataContext.Companies.Expand(c => c.Employees); 但是,如果我还想包括所有员工出勤记录,该怎么办 我不能这样做: dataContext.Companies.Expand(c => c.Employees).Expand(ce => ce.AttendanceRecords); dataContext.C

假设一个
公司
有多个
员工
s,而每个员工又有多个
考勤记录
s

使用
DataServiceQuery
我可以包括所有公司的所有员工:

 dataContext.Companies.Expand(c => c.Employees);
但是,如果我还想包括所有员工出勤记录,该怎么办

我不能这样做:

dataContext.Companies.Expand(c => c.Employees).Expand(ce => ce.AttendanceRecords);
dataContext.Companies.Expand(c => c.Employees.Expand(e => e.AttendanceRecords));
因为在第二个
扩展中
,我仍然只有可用的公司属性(因此
ce
仍然是指公司,而不是“公司员工”)

同样,我不能这样做:

dataContext.Companies.Expand(c => c.Employees).Expand(ce => ce.AttendanceRecords);
dataContext.Companies.Expand(c => c.Employees.Expand(e => e.AttendanceRecords));
因为
Expand
方法对员工不可用


如何在一次查询中返回公司、员工和考勤记录?

您可以尝试以下方法:

var companies = dataContext.Execute<Company>(new Uri("http://service/Companies?$expand=Employees($expand=AttendanceRecords)")).ToList();
var companys=dataContext.Execute(新Uri(“http://service/Companies?$expand=Employees($expand=attendencecords)”).ToList();

odatav4开始支持在另一个$expand中扩展实体。在这种情况下,我认为最好使用
expand(string)
方法,例如dataContext.companys.expand(“公司/员工”),但我真的希望找到一种使用lambda表达式来利用强类型的解决方案。据我所知,目前还没有这种方法。@TolgaEvcimen Entity Framework