2014-04-25 4 views
0
  //SELECT table1.GG_ITEM, Sum(table1.REM_QTY) AS SumPerGG_ITEM 
      //FROM table1 
      //WHERE (table1.SUGG_DOCK_DATE Is Not Null) 
      //GROUP BY table1.GG_ITEM 
      //ORDER BY table1.GG_ITEM; 

      var try1 = (from row in db2.Dumps select new { Type1 = row.GA_ITEM, Type2 = row.REM_QTY }); 

      Debug.Print(":::::try1:::::"); 
      foreach (var row in try1) 
      { 
       Debug.Print(row.Type1.ToString()); 
       Debug.Print(row.Type2.ToString()); 
      } 

      var try2 = (from row in db2.Dumps group row by row.GA_ITEM into g select new { Type1 = g.Key, Type2 = g.ToList() }); 

      Debug.Print("::::try2:::::"); 
      foreach (var row in try2) 
      { 
       Debug.Print(row.Type1.ToString()); 
       Debug.Print(row.Type2.ToString()); 
      } 

Je convertis une requête Access SQL en Linq. Les deux colonnes que je sélectionne dans ma table Dumps sont GA_ITEM et REM_QTY. Mon try1 fonctionne très bien et je vois le contenu des deux colonnes imprimées. Mon try1 ne duplique pas encore la fonctionnalité de la requête Access SQL.Création d'un groupe Linq par requête

Mon try2 est une tentative de regroupement. Pour ma try2row.Type1.ToString() est lisible mais row.Type2.ToString() est apparaître dans la fenêtre de sortie comme:

System.Collections.Generic.List`1[garminaspsandbox3.Models.Dump] 

Ce que je voudrais vraiment faire est try2 sélectionner GA_ITEM et REM_QTY comme je l'ai fait dans try1 et le groupe par GA_ITEM cependant ces domaines n'apparaissent pas dans ma saisie semi-automatique pour l'objet g.

Est-ce que quelqu'un sait comment faire cela dans Linq?

Merci de poster ...

Répondre

1

Votre Type2 propriété est titulaire d'un List, pas un seul élément, vous devez donc utiliser une autre boucle et itérer sur les éléments de ce groupe:

foreach (var row in try2) 
{ 
    Debug.Print(row.Type1.ToString()); 
    foreach(var item in row.Type2) 
    { 
     Debug.Print(item.GA_ITEM); 
     Debug.Print(item.REM_QTY); 
    } 
}