Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用GroupBy的LINQ聚合中的特定单个属性_C#_Asp.net_Linq - Fatal编程技术网

C# 使用GroupBy的LINQ聚合中的特定单个属性

C# 使用GroupBy的LINQ聚合中的特定单个属性,c#,asp.net,linq,C#,Asp.net,Linq,这是我的实体类: 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 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()
    {
    }
}
然后我填充一个名为OrdinFiltrati的集合,现在我需要创建一个聚合集合,如下所示:

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与ProdName进行比较。在本例中,我将有一行:

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

我想我必须对ProdName和ProdCodice进行分组

您需要向分组键添加
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) 
    });
试试这个:

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) 
});
List listaProdotti=ordiniFiltrati.Where(p=>p.ProdTipo==“PRODOTTO”).OrderBy(q=>q.ProdNome.ToList();
var listaprodottitfiltera=listaProdotti.Distinct().GroupBy(g=>new{g.ProdNome})。选择(group=>new
{                    
ProdNome=group.Key.ProdNome,
ProdCodice=group.First()
ProdQuantitaTotale=group.Sum(D=>D.ProdQuantitaTotale),
ProdCostoSingolo=group.Sum(C=>C.ProdCostoSingolo)
});

谢谢Stanley,我在请求中添加了更多细节。就我所见,我将通过聚合“Nome”和“Codice”来创建ProdCodice,对吗?似乎是正确的,但不幸的是,它并没有像预期的那样增加值。基本上,我必须使用GroupBy“ProdCodice”和“ProdName”进行第一次出现。
ProdCodice = group.First().ProdCodice,   

ProdCodice = group.Max(g => g.ProdCodice),  
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) 
});