2009-09-10 10 views
11

Jak mogę napisać zapytanie linq do entity zawierające klauzulę having?Podmiot Framework T-Sql "mając" Równoważny

Na przykład:

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

Odpowiedz

22

Każdy powód nie wystarczy użyć where klauzuli na wynik?

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 .... haha ​​... znów wygrywasz! <3 – womp

+5

grouped.Any() byłby używany dla Count()> 0, nie Count()> 1 – Lucas

+2

@Craig: Gdyby to było 'Count()> 0' wtedy nie byłoby potrzeby ograniczenia wszystko, biorąc pod uwagę, że było to wewnętrzne połączenie ... –

3

Wierzę, że można użyć GroupBy następnie przez Where klauzuli i będzie tłumaczyć go jako Having. Nie do końca pewne.

+2

Dla MySql spowoduje wewnętrzne WYBIERANIE z zewnętrznym WHERE, nie mając. To spowoduje problem z wydajnością. – Yuri