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
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
だけ結果に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() };
は、私はあなたがWhere
句が続くGroupBy
を使用することができると信じて、それはHaving
としてそれを翻訳します。しかし、完全に確かではありません。
MySqlの場合、HAVINGではなく、WHEREを持つ内部SELECTが発生します。したがって、パフォーマンスの問題が発生します。 – Yuri
Dammit Jon .... haha ...もう一度勝つ! <3> – womp
grouped.Any()はCount()> 0ではなくCount()> 1で使用されます。 – Lucas
@Craig: 'Count()> 0'だった場合は、すべて、それは内部結合だったので... –