这就是我想要做的事情:
string[] names= {"Dave","Mike","Sara","Roger"};
var events = eventsDB.where(a=>names.Contains(a.name));
我认为这很清楚。 eventDB是一个Linq to SQL连接,一切都很好 - 但这不适用于服务。有没有办法实现这个目标?
干杯!
答案 0 :(得分:1)
感谢提示小伙伴们,我想我已经找到了一种方法来从Web服务获得我想要的东西,而无需通过简单地手动构建查询URI来为服务添加其他方法......部分。
string[] names = { "Dave", "Mike", "Sara", "Roger" };
StringBuilder sb = new StringBuilder();
sb.Append("(");
foreach (string s in names)
{
sb.Append(String.Format("name eq '{0}'",s));
sb.Append(" or ");
}
sb.Remove(sb.Length - 4, 4);
sb.Append(")");
var events = eventsDB.AddQueryOption("$filter",sb.toString());
注意AddQueryOption函数
答案 1 :(得分:0)
您可以公开一个返回数组的服务方法。
然后你可以称之为
serviceProxy.serviceMethod.where(....
但我不认为你会这么想。首先,数据库和服务是完全不同的东西。
Linq转到WCF?好主意,但不计算。
答案 2 :(得分:0)
OData WCF数据服务的基础协议目前不支持此功能。
您可以在服务器端实现服务操作,并将值列表作为参数传递。请注意,对于服务操作,列表必须连接到单个字符串,例如逗号分隔列表。如果您选择行动,则可以直接传入列表。
另一种选择是构造一个类似的查询。如果数组中的值的数量很小,您可以构造一个类似的查询 其中(a => a.Name ==“John”|| a.Name ==“Mary”|| ...)