2010-06-13 5 views
4

Im essayant d'écrire la requête dans LINQgroupe LINQ par avec le comte

Select UserId, UserNumber 
FROM User 
where UserNumber in 
(Select UserNumber 
     FROM User 
     group by UserNumber 
     having Count(UserId) = 1) 

Aby laisse deviner?

Répondre

8
var query = from u in User 
      group u by u.UserNumber into usergroup 
      where usergroup.Count() == 1 
      from item in usergroup 
      select new { item.UserId,item.UserNumber }; 
+0

Est-ce que cela génère une seule requête? Ou 1 requête par groupe? –

+0

c'est une requête unique, quand 'User' est en fait quelque chose comme' dbContext.Users' –

0

Si les sous-requêtes sont votre truc, vous pouvez le faire de cette façon.

var subquery = 
    from u in User 
    group u by u.UserNumber into g 
    where g.Count() = 1 
    select g.Key; 

var query = 
    from u in User 
    where subquery.Any(num => num == u.UserNumber) 
    select u;