这是我的实体类:
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分组
答案 0 :(得分: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),
答案 1 :(得分: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)
});