これが私がやりたいことです:
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 への接続である場合、すべて問題ありませんが、これはサービスでは機能しません。これを達成する方法はありますか?
乾杯!
ヒントをありがとう、クエリURIを手動で作成するだけで、サービスに別のメソッドを追加することなく、Webサービスから必要なものを取得する方法を見つけたと思います...部分的に。
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 Data Services の基になるプロトコルである OData は、現在これをサポートしていません。
サーバー側でこれを行うサービス操作を実装し、値のリストをパラメーターとして渡すことができます。サービス操作では、リストを単一の文字列に連結する必要があることに注意してください。たとえば、コンマ区切りのリストです。代わりにアクションを使用する場合は、リストを直接渡すことができます。
もう 1 つのオプションは、同様のクエリを作成することです。配列内の値の数が少ない場合は、Where(a => a.Name == "John" || a.Name == "Mary" || ...) のようなクエリを作成できます。