我有如下查询
var query = (from x in NetworkDevices
where
x.Name == "blabla1" ||
x.Name == "blabla2"
select x );
我正在针对 Odata 端点运行它,因此它有效地被翻译成以下 URL
https://targetserver/endpoint.svc/NetworkDevices()?$filter=Name eq 'blabla1' or Name eq 'blabla2'
所以我想动态添加很多过滤器......在C#中我可以继续将它添加到我的查询中,但这不是动态的。我想在运行时这样做。如果我是从 Javascript 调用它,那么我也可以轻松地更新 URL。
我的问题是,在 C# 中,我如何将这些过滤器动态添加到 where 子句。
在普通的旧 LINQ(如 linq 2 对象)中,我可以做这样的事情。
var machines = new string[] { "blabla1" , "blabla2" } ;
res1.Where ( x => machines.Contains(x.Name) ).ToArray()
这会起作用,但这对 Odata 端点不起作用,因为我收到这样的错误。
不支持“包含”方法
所以我认为唯一的方法是动态地编辑表达式树或添加这些过滤器的东西。有人知道该怎么做吗?