Группировка - Linq to Objects - PullRequest
0 голосов
/ 11 июня 2009

С моим следующим кодом:

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

Спасибо

1 Ответ

3 голосов
/ 11 июня 2009

Группировка по "s", а не "sample". Затем вы можете выбрать данные, как вам нужно:

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