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.
我正在尝试创建如下所示的列表。
出于某种原因,它遵循前两个条件,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.