这就是我想要做的:
string[] names= {"Dave","Mike","Sara","Roger"};
var events = eventsDB.where(a=>names.Contains(a.name));
我认为这很清楚。在 eventsDB 是 Linq 到 SQL 连接的地方,一切都很好 - 但这不适用于服务。有什么办法可以做到这一点?
干杯!
这就是我想要做的:
string[] names= {"Dave","Mike","Sara","Roger"};
var events = eventsDB.where(a=>names.Contains(a.name));
我认为这很清楚。在 eventsDB 是 Linq 到 SQL 连接的地方,一切都很好 - 但这不适用于服务。有什么办法可以做到这一点?
干杯!
感谢您的提示,我想我已经找到了一种方法来从 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 函数
您可以公开一个返回数组的服务方法。
然后你可以这样称呼它
serviceProxy.serviceMethod.where(....
但我不认为你会想要这样。首先,数据库和服务是完全不同的东西。
Linq到WCF?好主意,但不计算。
WCF 数据服务的底层协议 OData 目前不支持此功能。
您可以在服务器端实现一个服务操作来执行此操作,并将值列表作为参数传递。请注意,对于服务操作,列表必须连接到单个字符串,例如逗号分隔列表。如果您要采取行动,则可以直接传入列表。
另一种选择是构建一个类似的查询。如果数组中的值数量很少,您可以构造一个查询,例如 Where(a => a.Name == "John" || a.Name == "Mary" || ...)