2009-06-10 8 views
0

Avec mon code suivant:Groupement - LINQ to Objects

using System.Collections.Generic; 
using System.Linq; 

namespace SampleGrouping 
{ 
internal class Program 
{ 
    private static void Main(string[] args) 
    { 
     var sample = new List<Samples> 
            { 
             new Samples{ParameterID = 11,MaterialID = 855,ProductID = 955,Quantity = 100}, 
             new Samples{ParameterID = 11,MaterialID = 855,ProductID = 955,Quantity = 200}, 
             new Samples{ParameterID = 12,MaterialID = 856,ProductID = 956,Quantity = 100}, 
             new Samples{ParameterID = 12,MaterialID = 856,ProductID = 956,Quantity = 400} 
            }; 
     // Result: Groupby ParameterID, MaterialID, ProductID 
     // ParameterID = 11,MaterialID = 855,ProductID = 955,Quantity = 300 
     // ParameterID = 12,MaterialID = 856,ProductID = 956,Quantity = 500 

     var enumerable = from s in sample 
         group sample by new 
              { 
               s.ParameterID, 
               s.MaterialID, 
               s.ProductID, 

              }; 
    } 
} 

internal class Samples 
{ 
    public int MaterialID { get; set; } 
    public int ParameterID { get; set; } 
    public int ProductID { get; set; } 
    public int Quantity { get; set; } 
} 
} 

Comment puis-je obtenir le résultat que: Liste comme

ParameterID = 11, MaterialID = 855, ProductID = 955, Quantité = 300
ParameterID = 12, MaterialID = 856, ProductID = 956, Quantité = 500

Merci

Répondre

3

groupe par "s", au lieu de "échantillon". Ensuite, vous pouvez sélectionner les données que vous en avez besoin:

var enumerable = 
    from s in sample 
    group s by new 
    { 
     s.ParameterID, 
     s.MaterialID, 
     s.ProductID, 
    } into GroupedSample 
    select new 
    { 
     GroupedSample.Key.ParameterID, 
     GroupedSample.Key.MaterialID, 
     GroupedSample.Key.ProductID, 
     TotalQuantity = GroupedSample.Sum(gs => gs.Quantity) 
    }; 
+0

Merci qui a fonctionné. – Sreedhar

Questions connexes