2009-01-31 1 views
0

J'ai un gars qui est un magicien pour écrire des procs stockés et il peut grignoter 10 tables en une seule colonne en un rien de temps. Je suis à moitié tenté d'investir quelques jours pour travailler avec lui sur le retour de XML au lieu de jeux de lignes car je peux les digérer toute la journée sans aucun problème. Je dis cela parce que c'est un défi d'obtenir un résultat d'un ensemble de lignes en ce que je peux facilement envoyer la ligne avec WCF. Voici le hack que je l'ai fait pour faire ce travail ...Utilisation de Linq pour obtenir un ensemble de lignes d'une seule colonne à partir d'une procédure stockée, Comment puis-je nettoyer ce travail de hack?

public static List<int> GetListOfManagersForRegional(int empId) 
    { 
     CMSDataContext cms = new CMSDataContext(); 
     List<cmsManagerList> mgrs = cms.GetRegionalsManagers(empId).ToList(); 
     List<int> managers = new List<int>(); 
     foreach (cmsManagerList m in mgrs) 
     { 
      if(m.ManagerId != null) managers.Add((int)m.ManagerId); 
     } 
     return managers; 
    } 

cmsManagerList est un type que j'ai créé dans le ORM pour permettre à la procédure stockée pour retourner sa valeur à quelque chose que je pourrais obtenir LINQ à digérer. Ce que je voudrais vraiment faire est d'aller directement à partir du proc stocké, qui ne renvoie qu'une seule colonne à List<int>. Quelqu'un sait-il comment faire mieux?

Répondre

2

Essayez quelque chose comme ceci:

public static IEnumerable<int> GetListOfManagersForRegional(int empId) { 
    using (var cms = new CMSDataContext()) { 
     return 
      from m in cms.GetRegionalsManagers(empId) 
      where m.ManagerID != null 
      select m.ManagerId;    
    } 
} 
+0

tweak Seulement je avais besoin était d'ajouter (int) pour rendre la valeur de retour heureux – thaBadDawg

Questions connexes