如何将linq写入包含having子句的实体查询?
例如:
SELECT State.Name, Count(*) FROM State
INNER JOIN StateOwner ON State.StateID = StateOwner.StateID
GROUP BY State.StateID
HAVING Count(*) > 1
答案 0 :(得分:27)
有什么理由不在结果上使用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() };
答案 1 :(得分:3)
我相信您可以使用GroupBy
后跟Where
子句,它会将其翻译为Having
。虽然不完全确定。
答案 2 :(得分:0)
如果您要按(Ex:age)比较不在组中的变量,则为:
var duplicated = (
from q1 in db.table1
where (q1.age >= 10 )
group q1 by new { q1.firstName, q1.lastName } into grp
where (grp.Count() > 1 )
select new
{
firstName= grp.Key.firstName,
lastName = grp.Key.lastName,
}
);