【发布时间】:2015-07-02 10:16:04
【问题描述】:
我正在将 linq 查询转移到 ado 中,但似乎无法获得正确的语法来实现我想要的结果。
我有一个简单的设置,用户有相关的操作。我想选择没有关注我并且本周没有存档操作记录的用户。
这是我尝试转换的等效 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 EXISTS EXISTS
但是对于每个示例,他们都会在子句中运行一个子查询。我想确保正在搜索的任何操作都与查询的第一部分中的用户相关联,但我不知道如何在 TSQL 中解决它
编辑
关于日期:我已经在传递给函数的代码中创建了两个日期值。它是在 C# 中计算的
【问题讨论】: