Linq To SQL和拥有

Che*_*sea 12 c# sql t-sql linq linq-to-sql

我对Linq To SQL相当新,但是尝试运行应该是一个相当简单的SQL查询,并且无法弄清楚如何使它在LINQ中发挥出色.

SELECT     Users.Id, Users.Id AS Expr1, Users.FirstName, Users.LastName, 
User_x_Territory.UserID
FROM         Users LEFT OUTER JOIN
             User_x_Territory ON User_x_Territory.UserID = Users.Id
GROUP BY Users.Id, Users.Id, Users.FirstName, Users.LastName, User_x_Territory.UserID
HAVING      (COUNT(User_x_Territory.UserID) = 0)
Run Code Online (Sandbox Code Playgroud)

只是试图让所有没有分配区域的用户,判断他们是否有领土的唯一方法是检查user_x_territory gerrund.

我可以通过以下方式将所有用户从我的数据库中删除:

var users = from u in db.Users
            join uXt in db.User_x_Territories on u equals uXt.User into gerr
            from users in gerr.DefaultIfEmpty()
            select users;
Run Code Online (Sandbox Code Playgroud)

但是从那里我无法弄清楚如何通过/必须优化搜索结果来添加组以仅显示没有区域的用户.

谢谢你的帮助.

Dan*_*ner 13

我建议以下解决方案.

db.Users.Where(u => u.User_x_Territories.Count == 0)
Run Code Online (Sandbox Code Playgroud)

  • db.Users.Where(u =>!u.User_x_Territories.Any()) (6认同)