Dynamics CRM 2011フィルタリングデータはWebサービスから返されました
-
26-10-2019 - |
質問
運がないエンティティレファレンスによってデータをフィルタリングしようとしています。 Where条項がなければ、Where句で正常に実行されます。次のエラーが表示されます。
サーバーは意味のある返信を提供しませんでした。これは、契約の不一致、早期セッションのシャットダウン、または内部サーバーエラーによって引き起こされる可能性があります。
Crmserviceを呼び出す私の方法は次のとおりです。
/// <summary>
/// Gets the categories.
/// </summary>
/// <returns></returns>
public IEnumerable<category> GetCategoriesExcludingSomething()
{
IEnumerable<category> data = CrmClient.categorySet.OrderBy(x => x.SubCategory).ThenBy(x => x.itf_name);
return data.Where(x => x.SubCategory.ToString() == "SomethingToExclude");
}
subcategory.nameも使用してみましたが、同じエラーが発生します。初期のバインディングやそれらのラインに沿って何かを使用するという事実に関連していると思いますが、デバッグ時に有用な情報を取得できませんでした。
どんなアドバイスや助けが素晴らしいでしょう、これは簡単なはずです:/
解決
このドキュメントによると、 http://technet.microsoft.com/en-us/library/gg328328.aspx
LINQクエリプロバイダーは、LINQ演算子のサブセットをサポートしています。 LINQで表現できるすべての条件がサポートされているわけではありません。
Orderbycontact.fullnameなどのエンティティ属性による注文をサポートします。
あなたができることは、最初にWhere句を使用し、次にtolist()メソッドを使用することです。この後、一般的なLINQクエリをすべて使用できるデータのコレクションがあります。
また、エンティティレファレンスを注文しようとすることは、それを行う良い方法ではありません。このように注文してみてください:
OrderBy(x => x.SubCategory.Id)
どこ: 句の左側は属性名でなければならず、句の右側は値でなければなりません。左側を定数に設定することはできません。句の両側は定数にすることはできません。文字列関数をサポートします。
ここでできることは、IDまたは名前で値をフィルタリングすることです(この場合、エンティティリファレンスから得られる唯一の関連情報です)。
Where(x => x.SubCategory.Name == "CategoryNameToExclude");