Возникли проблемы при построении этого небольшого сравнения в C # - PullRequest
0 голосов
/ 05 апреля 2011

Я использую Entity Framework в качестве своего ORM. Я пытаюсь получить все экземпляры оценок, где GradeInstanceId равен X, а Year равен этому году.

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);
}

Я получаю сообщение об ошибке:

Оператор '==' не может быть применен к операнды типа 'System.DateTime?' и 'int'

Как я могу решить это сравнение?

Спасибо.

Ответы [ 5 ]

1 голос
/ 05 апреля 2011

Ваша проблема в том, что вы пытаетесь сравнить объект с примитивом. Попробуйте сравнить компонент DateTime's year с вашей переменной int year.

1 голос
/ 05 апреля 2011

Попробуй это. Не уверен, что типа 'Год', поэтому я не могу точно сказать, что это будет работать.

    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);
}
0 голосов
/ 05 апреля 2011

Попробуйте это:

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);
}
0 голосов
/ 05 апреля 2011

Попробуйте g.Year.Year:

(g => g.GradeId == gradeID && g.Year.Year == currentYear)
0 голосов
/ 05 апреля 2011

Возможно, текущий год имеет DateTime. В этом случае вам может понадобиться сделать

currentYear.Year

Или g.Year имеет DateTime в этом случае вам нужно сделать

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...