2

運が悪いので、EntityReference でデータをフィルタリングしようとしています。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 も使用してみましたが、同じエラーが発生します。アーリー バインディングなどを使用していることが関係していると思いますが、デバッグ時に有用な情報を得ることができませんでした。

どんなアドバイスや助けも素晴らしいでしょう、これは簡単なはずです:/

4

1 に答える 1

2

このドキュメントによると: http://technet.microsoft.com/en-us/library/gg328328.aspx

LINQ クエリ プロバイダーは、LINQ 演算子のサブセットをサポートしています。LINQ で表現できるすべての条件がサポートされているわけではありません。

orderBy は、Contact.FullName などのエンティティ属性による順序付けをサポートしています。

できることは、最初に where 句を使用し、次に ToList() メソッドを使用することです。この後、すべての一般的な Linq クエリを使用できるデータのコレクションが得られます。

また、EntityReference を OrderBy しようとするのは、良い方法ではありません。次のように注文してみてください。

OrderBy(x => x.SubCategory.Id)

ここで、句の左側は属性名で、句の右側は値である必要があります。左辺を定数に設定することはできません。節の両側を定数にすることはできません。文字列関数のサポートは、Contains、StartsWith、EndsWith、および Equals です。

ここでできることは、Id または Name で値をフィルタリングすることです (この場合、EntityReference から得られる唯一の関連情報です)。

Where(x => x.SubCategory.Name == "CategoryNameToExclude");
于 2011-11-15T08:30:13.547 に答える