2009-09-10 23 views
11

¿Cómo puedo escribir un linq en la consulta de entidades que incluya una cláusula having?Entity Framework T-Sql "having" Equivalente

Por ejemplo:

SELECT State.Name, Count(*) FROM State 
INNER JOIN StateOwner ON State.StateID = StateOwner.StateID 
GROUP BY State.StateID 
HAVING Count(*) > 1 

Respuesta

22

algún motivo no sólo tiene que utilizar una cláusula where en el resultado?

var query = from state in states 
      join stateowner in stateowners 
       on state.stateid equals stateowner.stateid 
      group state.Name by state.stateid into grouped 
      where grouped.Count() > 1 
      select new { Name = grouped.Key, grouped.Count() }; 
+0

Dammit Jon .... jaja ... ¡tú ganas otra vez! <3 – womp

+5

agrupados.Cualquier() se usaría para Count()> 0, no Count()> 1 – Lucas

+2

@Craig: si hubiera sido 'Count()> 0', entonces no habría necesidad de una restricción en todo, dado que era una unión interna ... –

3

Creo que se puede utilizar un GroupBy seguido por una cláusula Where y que se traducirá como un Having. Aunque no del todo seguro.

+2

Para MySql causará SELECCIÓN interna con DONDE externo, NO TENIENDO. Por lo tanto, causará problemas de rendimiento. – Yuri