2010-07-02 4 views
4

Salut est là de toute façon d'écrire somthing comme çaGroupe LINQ par deux déclarations

  var r = from i in myList 
       group i by i.Number 
        into grp 
        select new 
        { 
         Reported = grp.Select(x => x.CurrentStatus).First(), 
         Number = grp.Key, 
         Sum = grp.Sum(x => x.Details[0].Quantity), 
         Name = grp.Select(x => x.Name).First(), 
         Details = grp.Select(x => x.Details).First(), 
         Descriptions = grp.Select(x => x.Descriptions).First(), 
         AssignmentId = grp.Select(x => x.AssignmentId).First(), 
         Listor = grp.Select(x => x.Number).Count() 
        }; 

dans ce

  var r = from i in myList 
       group i by i.Number, i.CurrentStatus 
        into grp 
        select new 
        { 
         Reported = grp.Select(x => x.CurrentStatus).First(), 
         Number = grp.Key, 
         Sum = grp.Sum(x => x.Details[0].Quantity), 
         Name = grp.Select(x => x.Name).First(), 
         Details = grp.Select(x => x.Details).First(), 
         Descriptions = grp.Select(x => x.Descriptions).First(), 
         AssignmentId = grp.Select(x => x.AssignmentId).First(), 
         Listor = grp.Select(x => x.Number).Count() 
        }; 

pour que je puisse regrouper par "groupe i par i.Number, i. CurrentStatus »

Répondre

10

Groupe par un type anonyme:

 var r = from i in myList 
      group i by new { i.Number, i.CurrentStatus } 
       into grp 
       select new 
       { 
        Reported = grp.Key.CurrentStatus, 
        Number = grp.Key.Number, 
        Sum = grp.Sum(x => x.Details[0].Quantity), 
        Name = grp.Select(x => x.Name).First(), 
        Details = grp.Select(x => x.Details).First(), 
        Descriptions = grp.Select(x => x.Descriptions).First(), 
        AssignmentId = grp.Select(x => x.AssignmentId).First(), 
        Listor = grp.Select(x => x.Number).Count() 
       }; 
+1

Utilisez 'Reported = grp.Key.CurrentStatus' au lieu de' Reported = grp.Select (x => x.CurrentStatus) .First() '. –

+0

@Jaroslav: Bon point! J'ai mis à jour la réponse avec votre solution. – Quartermeister

+0

Merci son travail génial! – Tan