2015-04-24 43 views
0

我正在将一个linq查询移动到ado,似乎无法获得正确的语法来实现我想要的结果。如何选择没有行的日期落在当前星期的记录

enter image description here
我有一个简单的设置,其中用户有相关的操作。我想选择那些没有关注我的用户,并且本周没有文件上的操作记录。

下面是对应的LINQ查询我想转换(注意,这些都是不同的表名,但有完全相同的模式)

var users = context.IG_Cats_Users.Where(p => p.IsFollowing == false 
                  & p.IsRequested == false & 
                  !p.IG_Cat_Actions.Any(
                   a => 
                    DbFunctions.TruncateTime(a.Date) >= 
                    first.Date 
                    & 
                    DbFunctions.TruncateTime(a.Date) <= 
                    last.Date)) 
        .Take(numOfUsers); 

这里是我的查询到目前为止

var qry = "SELECT Id FROM Users " 
      + "INNER JOIN Actions ON Users.Id = Actions.UserId " 
      + "WHERE Users.IsFollowing = 0 AND Users.IsRequested = 0 AND IF NOT EXISTS (" 

我想我会尝试IF NOT EXISTSEXISTS
但每个例子他们在子句中运行子查询。我想,以确保被搜索的任何动作与从查询的第一部分用户相关联,但我无法弄清楚如何去解决它在TSQL

编辑
关于日期:我已经有两个日期值是在我传递给函数的代码中创建的。它计算在C#

回答

0

事情是这样的:

SELECT u.Id 
FROM Users u 
WHERE u.IsFollowing = 0 AND u.IsRequested = 0 AND 
     NOT EXISTS (SELECT 1 
        FROM Actions a 
        WHERE u.Id = a.UserId 
       ); 
+0

好了,到这两个查询,然后关联的方法是通过别名的实际表。得到它了! – Adrian

相关问题