在 C# 中构建这个小比较时遇到问题

本文关键字:比较 遇到 问题 构建 | 更新日期: 2023-09-27 17:48:54

>我正在使用实体框架作为我的ORM。我正在尝试获取 GradeInstanceId 等于 X 且年份等于今年的所有成绩实例。

int currentYear = DateTime.Now.Year;
private void LoadGradeInstances()
{
    GradeInstanceRepository repo = new GradeInstanceRepository();
    int gradeId = 5; //For example.
    cmbGradeInstance.DataSource = repo.FindAll().Where(g => g.GradeId == gradeID && g.Year == currentYear);
}

我收到错误:

运算符"=="不能应用于 类型为"系统.日期时间?"的操作数 和"int"

如何解决此比较?

谢谢。

在 C# 中构建这个小比较时遇到问题

您的问题是您正在尝试将对象与基元进行比较。尝试将日期时间的年份部分与int年份变量进行比较。

试试这个。 不确定什么类型的"年份",所以我不能肯定地说它会起作用。

    int currentYear = DateTime.Now.Year;
private void LoadGradeInstances()
{
    GradeInstanceRepository repo = new GradeInstanceRepository();
    int gradeId = 5; //For example.
    cmbGradeInstance.DataSource = repo.FindAll().Where(g => g.GradeId == gradeID && g.Year.Year == currentYear);
}

可能是当前年份是日期时间。在这种情况下,您可能需要这样做

currentYear.Year

或者 g.Year 是日期时间,在这种情况下,您需要这样做

g.Year >= datetimeStartOfYear && g.Year <= datetimeEndOfYear

尝试g.Year.Year

(g => g.GradeId == gradeID && g.Year.Year == currentYear)

试试这个:

int currentYear = DateTime.Now.Year;
private void LoadGradeInstances()
{
    GradeInstanceRepository repo = new GradeInstanceRepository();
    int gradeId = 5; //For example.
    cmbGradeInstance.DataSource = repo.FindAll().Where(g => g.GradeId == gradeID && g.Year.Value.Year == currentYear);
}