c# Linq 方法不遵循我设置的条件之一

c# Linq method is not following one of my conditions that I set

我正在尝试创建如下所示的列表。

出于某种原因,它遵循前两个条件,isPublished 和 IsRPG == false。但它忽略了 ShelfDate。

我想要 ShelfDate 大于或等于当前日期的所有游戏。

但它会显示具有任何 ShelfDate 的游戏...

顺便说一句 ShelfDate 是 DateTime 类型。

这是我的代码:

var games = await _context.Game
   .Where(x => x.IsPublished == isPublished && x.IsRPG == false && x.ShelfDate >= DateTime.Now)
   .Select(x => new GameEntity
   { ... }

以下是 Game 和 GameEntity 的模型:

public partial class Game
{
    public long Id { get; set; }
    public string Title { get; set; }
    public DateTime ShelfDate { get; set; }
    public DateTime IsPublished { get; set; }
    public bool IsRPG { get; set; }
    public string Description { get; set; }
}   


public partial class GameEntity
{
    public string Title { get; set; }
    public DateTime ShelfDate { get; set; }
    public DateTime IsPublished { get; set; }
    public bool IsRPG { get; set; }
}      

我做错了什么吗?

我没有收到任何错误。

谢谢!

您在这里使用了错误的语法。您正在使用 lambda 运算符 =>。你必须在这里使用比较。 >=<=

应该是这样的

var games = await _context.Game
   .Where(x => x.IsPublished == isPublished && x.IsRPG == false && x.ShelfDate <= DateTime.Now)
   .Select(x => new GameEntity
   { ... }

将回复放在这里。

DateTime.Now 未被您的数据提供者识别,并且需要更早设置并且不被查询评估,假设您使用的是 Entity Framework.