0

这是我的实体类:

public class DettaglioRiga
{
    public int OrdId { get; set; }
    public string OrdStato { get; set; }
    public string ProdCodice { get; set; }
    public string ProdModelNumber { get; set; }
    public string ProdNome { get; set; }
    public string ProdTipo { get; set; }
    public int ProdQuantitaAcquistata { get; set; }
    public int ProdQuantitaTotale { get; set; }
    public double ProdCostoSingolo { get; set; }
    public double ProdCostoTotale { get; set; }
    public double ProdSpeseSpedizione { get; set; }

    public DettaglioRiga()
    {
    }
}

然后我填充了一个名为ordiniFiltrati的集合,现在我需要创建一个聚合集合,如下所示:

List<DettaglioRiga> listaProdotti = ordiniFiltrati
    .Where(p => p.ProdTipo == "PRODOTTO")
    .OrderBy(q => q.ProdNome)
    .ToList();

var listaProdottiFiltrata = listaProdotti
    .Distinct()
    .GroupBy(g => new { g.ProdNome })
    .Select(group => new DettaglioRiga
    {                    
        ProdNome = group.Key.ProdNome,
        ProdCodice = group.ProdCodice,   // (?)I cannot get this
        ProdQuantitaTotale = group.Sum(D => D.ProdQuantitaTotale), 
        ProdCostoSingolo = group.Sum(C => C.ProdCostoSingolo) 
    });

基本上我需要获取“ProdCodice”的值并分配给新的DettaglioRiga对象。看不懂,有什么提示吗?

编辑:我将添加更多细节:

谢谢你的回答,但我的情况有点棘手。这是我的数据:

ProdCodice  ProdNome
S-3850759   Driller A
S-3850755   Driller A
S-3850759   Driller A
S-3851196   Driller B

基本上我需要将 ProdCodice 与 ProdName 进行分组。在这个例子中,我会有一行:

ProdCodice  ProdNome
S-3850759   Driller A
S-3850755   Driller A
S-3851196   Driller B

我想我必须同时分组 ProdName 和 ProdCodice

4

2 回答 2

1

您要么需要添加ProdCodice到您的分组键:

var listaProdottiFiltrata = listaProdotti
    .Distinct()
    .GroupBy(g => new { g.ProdNome, g.ProdCodice })  // <-- added another value to group on
    .Select(group => new DettaglioRiga
    {                    
        ProdNome = group.Key.ProdNome,
        ProdCodice = group.Key.ProdCodice,   
        ProdQuantitaTotale = group.Sum(D => D.ProdQuantitaTotale), 
        ProdCostoSingolo = group.Sum(C => C.ProdCostoSingolo) 
    });

或使用聚合函数来指定想要的。一些选项:

ProdCodice = group.First().ProdCodice,   

ProdCodice = group.Max(g => g.ProdCodice),  
于 2013-10-29T15:37:38.260 回答
1

尝试这个:

List<DettaglioRiga> listaProdotti = ordiniFiltrati.Where(p => p.ProdTipo == "PRODOTTO").OrderBy(q => q.ProdNome).ToList();
            var listaProdottiFiltrata = listaProdotti.Distinct().GroupBy(g => new { g.ProdNome }).Select(group => new  
{                    
    ProdNome = group.Key.ProdNome,
    ProdCodice = group.First().ProdCodice,   // (?)I cannot get this
    ProdQuantitaTotale = group.Sum(D => D.ProdQuantitaTotale), 
    ProdCostoSingolo = group.Sum(C => C.ProdCostoSingolo) 
});
于 2013-10-29T15:38:05.027 回答