/ / groupby use em Linq - c #, linq

uso groupby em Linq - c #, linq

Vamos dizer que eu tenho uma lista de funcionários

var employeeGroup = from emp in Employee.GetAllEmployees()
group emp by emp.Department;
//why no need to use "select" here

Eu não sei porque não há necessidade de adicionar um "Select" no final do linq. Se eu quiser recuperar as instâncias do empregado, então deve ser:

var employeeGroup = from emp in Employee.GetAllEmployees()
select emp;

Respostas:

0 para resposta № 1

Tanto o linq produz resultados diferentes. O primeiro linq agrupa os resultados com base no departamento e o segundo agrupa todos os registros diretamente. Por exemplo, digamos que há 5 registros na tabela Record1 - dep1 Record2 - dep2 Record3 - dep3 Record4 - dep2 Record5 - dep1

O primeiro resultado do linq seria dep1 dep2 dep3 O grupo aparecerá como um único registro

O segundo resultado do linq seria dep1 dep2 dep3 dep2 dep1

Basicamente, a consulta deve terminar com uma cláusula select ou group. Espero que ajude.


2 para resposta № 2

o documentação diz:

A cláusula group retorna uma sequência de IGrouping <TKey, TElement> objetos que contêm zero ou mais itens que correspondem ao valor da chave do grupo.

EDITAR:

Dando uma olhada no Fundamentos da Expressão de Consulta na seção:

  • Terminando uma expressão de consulta

Afirma que:

Uma expressão de consulta deve terminar com uma cláusula select ou uma cláusula group.

Um olhar no Selecione a documentação da cláusula revela que:

Em uma expressão de consulta, a cláusula selectespecifica o tipo de valores que serão produzidos quando a consulta é executada. [...] Uma expressão de consulta deve terminar com uma cláusula select ou uma cláusula group. [...]

Use a cláusula de grupo para produzir uma seqüência de grupos [...]

Use a cláusula select para produzir todos os outros tipos de seqüências [...]

Parece que a especificação do tipo de retorno é o ponto decisivo. Como a cláusula group by especifica o tipo de retorno, não é mais necessário fazer uma seleção extra, em contraste com Onde (como mencionado por Tim Schmelter).