2009-09-10 14 views
11

having節を含むエンティティクエリにlinqを書く方法はありますか?例えばEntity Framework T-Sql "equivalent"を持つ

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

答えて

22

だけ結果にwhere句を使用しない任意の理由は?

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​​ ...もう一度勝つ! <3> – womp

+5

grouped.Any()はCount()> 0ではなくCount()> 1で使用されます。 – Lucas

+2

@Craig: 'Count()> 0'だった場合は、すべて、それは内部結合だったので... –

3

は、私はあなたがWhere句が続くGroupByを使用することができると信じて、それはHavingとしてそれを翻訳します。しかし、完全に確かではありません。

+2

MySqlの場合、HAVINGではなく、WHEREを持つ内部SELECTが発生します。したがって、パフォーマンスの問題が発生します。 – Yuri

関連する問題