Linq 实体框架T-Sql“;拥有;相等的
如何编写包含having子句的linq到实体查询 例如:Linq 实体框架T-Sql“;拥有;相等的,linq,entity-framework,linq-to-entities,Linq,Entity Framework,Linq To Entities,如何编写包含having子句的linq到实体查询 例如: 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 state
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() };
我相信您可以使用
GroupBy
后跟Where
子句,并将其翻译为Having
。但不完全确定。如果要比较不在组中的变量by(例如: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,
}
);
任何()都将用于Count()>0,而不是Count()>1@Craig:如果它是
Count()>0
,那么就根本不需要限制,因为它是一个内部连接…对于MySql,它将导致使用外部WHERE进行内部选择,而不是使用。因此,它将导致性能问题。