2009-06-10 6 views
0

С моим следующим кодом:Группировка - Linq к объектам

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; } 
} 
} 

Как можно достичь результата: Список как

ParameterID = 11, MaterialID = 855, ProductID = 955, Количество = 300
ParameterID = 12, MaterialID = 856, ProductID = 956, Количество = 500

Благодаря

ответ

3

Группа по "с", а не "образец". Затем вы можете выбрать данные по мере необходимости:

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

Спасибо, что сработал. – Sreedhar

Смежные вопросы