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

基本的に、ProdName と比較して ProdCodece をグループ化する必要があります。この例では、次の行があります。

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 に答える