Question

Je suis en train de filtrer les données par le EntityReference sans chance. Sans la clause where il fonctionne très bien avec la clause where je reçois l'erreur suivante:

Le serveur n'a pas fourni une réponse significative; cela pourrait être causé par un décalage de contrat, un arrêt de la session prématurée ou interne erreur serveur.

Voici ma méthode qui appelle la 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");
        }

J'ai essayé d'utiliser SubCategory.Name aussi, mais il donne la même erreur. Je pense qu'il est lié au fait qu'il utilise la liaison au début ou quelque chose dans ce sens, mais je ne pouvais pas obtenir toute information utile lors du débogage.

Des conseils ou de l'aide serait grande, cela devrait être facile: /

Était-ce utile?

La solution

Selon cette documentation: http://technet.microsoft.com/en -nous / bibliothèque / gg328328.aspx

Le fournisseur de requêtes LINQ prend en charge un sous-ensemble des opérateurs de LINQ. ne pas toutes les conditions qui peuvent être exprimées dans LINQ sont pris en charge.

orderBy supports de commande par des attributs d'entités, telles que Contact.FullName.

Ce que vous pouvez faire est d'utiliser la clause where d'abord, puis utiliser la méthode ToList (). Après cela, vous aurez une collection de données sur lesquelles vous pouvez utiliser toutes les requêtes LINQ communes.

En outre, en essayant de OrderBy un EntityReference n'est pas la bonne façon de le faire. Vous devriez essayer de commander comme ceci:

OrderBy(x => x.SubCategory.Id)

où: Le côté gauche de la clause doit être un nom d'attribut et le côté droit de la clause doit être une valeur. Vous ne pouvez pas définir le côté gauche à une constante. Les deux côtés de la clause ne peut pas être constantes. Prend en charge les fonctions de chaîne contient, StartsWith, EndsWith, et equals

Ce que vous pouvez faire ici est le filtrage soit des valeurs de l'identifiant ou par le nom (qui est la seule des informations pertinentes que vous aurez du EntityReference dans ce cas).

Where(x => x.SubCategory.Name == "CategoryNameToExclude");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top