实体框架T-Sql“具有”等价物

时间:2009-09-10 18:35:23

标签: linq entity-framework linq-to-entities

如何将linq写入包含having子句的实体查询?

例如:

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

3 个答案:

答案 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,
                   }
                 );