Перевод ГДЕ НЕ ВСТАВЛЯЕТСЯ В ЛИНК - PullRequest
1 голос
/ 02 декабря 2011

Сначала у меня установлена ​​следующая модель домена с использованием кода EF:

public class User
{
    public virtual int Id { get; set; }
    public virtual string Email { get; set; }
    public virtual ICollection<UserProcessed> UsersProcessed { get; set; }
}

public class UserProcessed
{
    public virtual int Id { get; set; }
    public virtual DateTime CreatedAt { get; set; }
    public virtual User user { get; set; }
}

Я пытаюсь перевести следующий запрос T-SQL в LINQ, и у меня возникли некоторые трудности:

SELECT u.Email
FROM Users u LEFT JOIN UsersProcessed up ON u.Id = up.UserId
WHERE up.UserId IS NULL
AND u.CreatedAt BETWEEN '2011-12-01' AND '2011-12-01'

Это вернет всех пользователей, которые не были обработаны (UserId не существует в таблице UsersProcessed).

IEnumerable<User> users = Database.Set<User>().Where(....).ToList();

1 Ответ

5 голосов
/ 02 декабря 2011

Это может не переводиться к точно такому же запросу при создании SQL, но это должно помочь:

IEnumerable<User> users = Database.Set<User>().Where(u => !u.UserProcessed.Any()).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...