2010-09-08 4 views
0

J'ai besoin de créer WebMethod qui va récupérer des données de db et les retourner au client.Retour des résultats paginés à partir de WebMethod?

Maintenant, supposons que la quantité de données est énorme, donc je voudrais prendre et retourner des données en parties.

Y a-t-il un moyen d'utiliser le rendement de rendement dans Webmethod? Comme je sais qu'il n'y a aucun moyen de retourner les types génériques dans WebMethods, mais je ne pouvais pas utiliser IEnumerable non générique.

Comment puis-je accomplir cela?

Répondre

2

Non, vous ne pouvez pas générer de retour à partir d'un WebMethod. Mais vous pouvez ajouter deux paramètres à l'appel de méthode pour permettre les résultats paginés:

public string[] GetResults(string someQuery) 
{ 
    var results = new List<string>(); 

    // Fill Results 

    return results.ToArray(); 
} 

Devient:

public string[] GetResults(string someQuery, int pageNum, int pageSize) 
{ 
    var results = new List<string>(); 

    // Fill Results 

    return results.Skip(pageNum * pageSize).Take(pageSize).ToArray(); 
} 
+0

Sur ce point, il peut vouloir exposer une valeur qui indique le nombre de résultats, il y a dans la résultat total. En outre, du point de vue du service Web, il ne souhaite peut-être pas que la taille de la page soit une valeur fournie par l'utilisateur, mais plutôt une limite du service (ou du moins un test pour une limite supérieure). pour saisir un milliard de résultats à la fois). –

Questions connexes