2010-10-23 2 views
0

J'ai un service de données wcf que j'appelle de Silverlight et j'élargis une propriété de collection sur une entité et je veux être capable de trier les éléments dans la propriété étendue en le spécifiant dans la requête.puis-je trier une propriété de chargement de chargement différé sur une entité de service de données wcf

Existe-t-il un moyen de le faire?

Voici le linq expand: - Je veux que la collection Videos soit triée par une propriété appelée SortOrder sur l'entité Video.

var expandQuery = (from s in dataService.Series.Expand("Videos") 
where s.SeriesGUID == series.SeriesGUID 
select s) as DataServiceQuery<Series>; 

grâce Michael

Répondre

0

C'est actuellement pas possible dans le protocole OData que l'option de requête orderby $ applique uniquement à la « racine » de la requête (dans votre cas, les entités de la série). Vous pouvez trier les résultats sur le client pour contourner ce problème. Si vous devez vraiment effectuer le tri sur le serveur, vous pouvez définir une opération de service pour cette requête spécifique. Ou, si vous n'avez pas besoin de renvoyer l'instance Series de la requête, vous pouvez aussi lancer une requête comme /Series(guid'...')/Videos?$orderby=SortOrder qui fonctionnerait. Pour faire cela dans le LINQ, cela ressemblerait à ça:

var query = (from s in dataService.Series 
where s.SeriesGUID == series.SeriesGUID 
select s.Videos).OrderBy(v => v.SortOrder) as DataServiceQuery<Video>; 
+0

Puis-je ajouter les vidéos retournées par votre requête linq à la série déjà chargée sur le client - un peu comme une extension manuelle. Je suis databinding une liste à la propriété de vidéos sur la série actuellement sélectionnée et voudrait vraiment pouvoir garder les vidoes dans l'instance de série si possible. – MIantosca

+0

Si les vidéos sont des instances DataServiceCollection, vous devriez pouvoir utiliser sa méthode Load pour le charger à partir de DataServiceQuery. –

+0

Vitek, j'essaie d'implémenter votre exemple de requête ci-dessus, mais je reçois une erreur sur la variable v - il me dit v n'a pas de propriété SortOrder - il ressemble à v est un DataServiceCollection

Questions connexes