我正在使用 Odata 客户端代码生成器代理类使用 Odata v4 服务。
MetroContext = new MetroContainer(new Uri(@"http://localhost:56222/service"));
IQueryable<Patient> query = MetroContext.Patients;
query = query.Where(x => x.FirstName == "john");
上面的代码工作正常。但我需要动态构建查询。所以我尝试了以下方法:
MetroContext = new MetroContainer(new Uri(@"http://localhost:56222/service"));
IQueryable<Patient> query = MetroContext.Patients;
ParameterExpression pe = Expression.Parameter(typeof(Patient), "patient");
Expression left = Expression.Property(pe, "FirstName");
Expression right = Expression.Constant("john");
Expression predicateBody = Expression.Equal(left, right);
query = query.Provider.CreateQuery<Patient>(predicateBody);
当我运行程序时,我收到一条错误消息:
将 Linq 表达式转换为 URI 时出错:不支持二元运算符“Equal”。
- 为什么我会收到此错误,我该如何解决?
- 如何通过组合诸如
Contains()
,之类的方法来创建动态查询StartsWith()
?