>我正在使用实体框架作为我的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"
如何解决此比较?
谢谢。
您的问题是您正在尝试将对象与基元进行比较。尝试将日期时间的年份部分与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);
}