Make a foreach that does not repeat the same data

1

I have this foreach, in a table with more than 5000 records. There are only 6 types of business unit. I would like in foreach and linq, when a type of un appears, it loads and then no longer repeats it, ie, it loads another different one and so on, so that the result comes only 6 registers. Below my foreach.

foreach (var _idmotivo in monta_arvore)
            {
                _listaUnidade = db.Apresentacao
                                .Where(un => un.Codigo_Unidade_Negocio == _idmotivo.Codigo_Unidade_Negocio)
                                .Select(u => new MontaArvoreAcao
                                {
                                    Unidade_Negocio = u.Unidade_Negocio,
                                    Codigo_Unidade_Negocio = u.Codigo_Unidade_Negocio
                                }).ToList().OrderBy(o => o.Unidade_Negocio);
            }
    
asked by anonymous 22.09.2014 / 16:50

1 answer

2

You can do this using GroupBy .

_listaUnidade = db.Apresentacao
                                .Where(un => un.Codigo_Unidade_Negocio == _idmotivo.Codigo_Unidade_Negocio)
                                .Select(u => new MontaArvoreAcao
                                {
                                    Unidade_Negocio = u.Unidade_Negocio,
                                    Codigo_Unidade_Negocio = u.Codigo_Unidade_Negocio
                                })
                                .GroupBy(x=>x.Unidade_Negocio)
                                .Select(x=>x.First()
                                .ToList().OrderBy(o => o.Unidade_Negocio);
    
22.09.2014 / 18:33