2011-01-08 3 views
0

J'ai eu une bonne recherche d'aide, mais j'ai de gros problèmes à résoudre ce problème. Fondamentalement, je veux réduire EntityCollection en une chaîne pour l'afficher avec l'enregistrement lié dans une seule ligne d'un gridview, mais je ne sais pas comment, ou si c'est même la meilleure chose à faire.Requête Linq to ADO Entité

Mon diagramme d'entités (voir ci-dessous); Je veux récupérer des objets de loom_Charms, cependant beaucoup répondent aux critères, affichant chacun une chaîne aplatie de loom_CharmCosts, loom_charmMinimums, à peu près toutes les relations * -Many, et les enfermant tous dans une grille. Après avoir passé des heures à essayer de bricoler pour voir s'il y a une meilleure façon, je donne et demander de l'aide »

http://i55.tinypic.com/nud06.png

Répondre

2

Essayez quelque chose comme ça - vous aurez besoin d'aplatir les coûts par en utilisant quelque chose comme String.Join().

var charmsAndCosts = context.Ioom_Charms 
    .Where(c => c.xxxxx = whatever) 
    .Select(c => new { 
     Charm = c, 
     Costs = String.Join(",", c.Ioom_CharmCosts.Select(cc => cc.charmCost.ToString()).ToArray())}); 
+0

Hmm, je reçois « LINQ to Entities ne reconnaît pas la méthode 'System.String Rejoignez (System.String, System.String [])' méthode et cette méthode ne peut pas être traduite en une expression de magasin. "avec ceci.Il est tellement irritant, j'aurais bien qu'il y ait un moyen facile de le faire! EDIT: Oops, nevermind, it travaille dans Linq à ADO, mais pas SQL. Quelqu'un peut-il me dire si c'est une approche particulièrement souhaitable, cependant? Puis-je l'éviter en faisant quelque chose d'intelligent? – Oramus

+0

Appelez .ToArray() après votre instruction .Where(). –