1

这就是我想要做的:

string[] names= {"Dave","Mike","Sara","Roger"};
var events = eventsDB.where(a=>names.Contains(a.name));

我认为这很清楚。在 eventsDB 是 Linq 到 SQL 连接的地方,一切都很好 - 但这不适用于服务。有什么办法可以做到这一点?

干杯!

4

3 回答 3

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 函数

于 2012-06-12T22:16:44.867 回答
0

您可以公开一个返回数组的服务方法。

然后你可以这样称呼它

serviceProxy.serviceMethod.where(....

但我不认为你会想要这样。首先,数据库和服务是完全不同的东西。

Linq到WCF?好主意,但不计算。

于 2012-06-12T13:25:22.357 回答
0

WCF 数据服务的底层协议 OData 目前不支持此功能。

您可以在服务器端实现一个服务操作来执行此操作,并将值列表作为参数传递。请注意,对于服务操作,列表必须连接到单个字符串,例如逗号分隔列表。如果您要采取行动,则可以直接传入列表。

另一种选择是构建一个类似的查询。如果数组中的值数量很少,您可以构造一个查询,例如 Where(a => a.Name == "John" || a.Name == "Mary" || ...)

于 2012-06-12T18:56:42.657 回答