2010-10-30 8 views
0
  • Un employé peut avoir plusieurs véhicules ..
  • Et une entreprise peut avoir plusieurs employés ..

Ma mission est d'obtenir les entreprises qui ont donc le plus de véhicules ..SQL pour la requête LINQ, retourner des objets et COUNT bien regroupés

J'ai la requête LINQ fonctionnant parfaitement (ouf)! Il revient (via select nouveau {}) ..

  • CompanyID
  • EmployeeVehicleCount

Fantastique! MAIS .. Je veux être en mesure de retirer des objets « Société » plutôt que l'int CompanyID, pour que je puisse y accéder essentiellement comme celui-ci tout en itérer les résultats:

ResultRow.Company.CompanyName 

Et

ResultRow.EmployeeVehicleCount 

Sinon, je vais devoir d'abord mettre en place une boucle puis instancier chaque compagnie en passant par la boucle qui ne semble pas très efficace.

Quelle est la manière la plus propre de réaliser ce que je cherche?

+0

sans affichage LINQ réelle il est difficile de venir avec des suggestions à votre requête spécifique –

Répondre

1

si vous avez la CompanyID et vehiclecount, vous pouvez transformer ce grâce à un nouveau Sélectionnez ala

var list = <your existing linq query>.Select(o => new { Company = <SomeDataMethod>(o.CompanyID), EmployeeVehicleCount = o.EmployeeVehicleCount }); 

maintenant vous pouvez dire

foreach (var result in list) 
{ 
    var s = result.Company.CompanyName +" has "+ result.EmployeeVehicleCount +" cars"; 
} 
+0

Merci pour la réponse. La première partie est en or et fonctionne magnifiquement - merci beaucoup !!! Malheureusement, le deuxième extrait ne fonctionne pas pour moi. J'obtiens: "'object' ne contient pas de définition pour 'Company' et aucune méthode d'extension 'Company' acceptant un premier argument de type 'object' n'a été trouvée (manque-t-il une directive using ou une référence d'assembly? Je n'ai aucune idée qu'il y a un objet "Société" à l'intérieur de lui.Toutes les pensées? – Aaron

+0

Ok je peux le faire fonctionner dans le contexte de la même méthode quand tout est juste un var. Mais dès que je retourne la liste à la suite de une méthode, elle ne fonctionne plus en dehors de cette méthode parce que si je la passe comme objet type, elle dit que les objets ne peuvent pas être énumérés par foreach, mais si je la passe comme IQueryable/IEnumerable, alors elle dit "elle ne contient pas une définition pour 'Company' ... "comme ci-dessus etc .. – Aaron

+0

Je ne veux vraiment pas faire une classe/structure personnalisée pour chaque requête qui fait un groupe par le nombre – Aaron