Bring one more field in group by linq

0

I have this

var grupo = from item in aliquotaProduto
group item by item.CFOP_ID into agrupamento
select new
{
    Categoria = agrupamento.Key,
    Quantidade = agrupamento.Count()
};

Can I bring a ID_PROD in select besides Category and Quantity?

EDIT1

I did so

var grupo = from item in aliquotaProduto
    group item by item.CFOP_ID into agrupamento
    select new
    {
        Produto = agrupamento.Select(it => it.ID_PROD), 
        Categoria = agrupamento.Key,
        Quantidade = agrupamento.Count()
    };

But I have trouble working with it. I have the right Products, but I can not do anything else with them. How do I do this? How do I assign my assessment now?

EDIT2

If I do so

var grupo = from item in objectProd
group item by new { item.CFOP_ID, item.ID_Prod };

I have this

Key = {{CFOP_ID = 5402, ID_PRO = 1 }} 
Key = {{CFOP_ID = 5404, ID_PRO = 2 }} 
Key = {{CFOP_ID = 5404, ID_PRO = 3 }}

If I do this:

foreach(var item in Lista)
{
    item.vlrUnit = rateio * varCount;

//a varCount deveria vir 1 para CFOP = 5402 e 2 para CFOP = 5404. É isso que eu não sei fazer.
}

That's exactly what I need to do.

    
asked by anonymous 05.04.2018 / 15:54

2 answers

2

try the following.:

var quantidades = (
    from item in objectProd 
    group item.CFOP_ID by item.CFOP_ID
).ToDictionary(grp => grp.Key, grp => grp.Count())

foreach(var produto in objectProd)
{
    var quantidade = quantidades[produto.CFOP_ID];
    produto.vlrUnit = rateio * quantidade;
}
    
05.04.2018 / 19:21
1

I found a similar question in SOEN and according to it just put the fields right in group by :

var grupo = from item in aliquotaProduto
group item by new { item.CFOP_ID, item.CAMPO_CATEGORIA, item.CAMPO_QTD }
    
05.04.2018 / 16:29