Ошибка возврата одного из двух объектов, когда один равен NULL, с помощью оператора LINQ - PullRequest
0 голосов
/ 08 мая 2019

Я изо всех сил пытаюсь реализовать то, что представляется относительно простым оператором LINQ, в котором я хочу вернуть объект из одного из двух мест в зависимости от того, существует он или нет, и получаю следующую ошибку при каждом повороте, который я совершаю.

System.ArgumentException: 'Argument types do not match'

Я пробовал много разных подходов, но всегда получаю одну и ту же ошибку, поэтому я не должен понимать, что я прошу обработчик LINQ.

Я пробовал другие подходы к структурированию моегоLINQ, но тот, который наиболее просто подчеркивает мою проблему, показан ниже:

.Select(
    x => new
    {
        x.Interval,
        x.Enrolment,
        x.Response,
        ResponseOffset = x.Response.ResponseIntervalOffset,
        DefaultOffset = x.Interval.TblChecklistResponseIntervalOffset.FirstOrDefault(
                                     o => o.TimeZoneId == (x.Enrolment.Entity.LocalTimeZoneId ?? defaultTimeZoneId))
    })
    .Select(x => new
    {
        x.Interval,
        x.Enrolment,
        x.Response,
        Offset = x.ResponseOffset ?? x.DefaultOffset <-- THIS CAUSES ERROR
    })

Иногда может быть смещение, связанное с ответом, но только если ответ существует, если ответ не существует, тогда я хочуиспользуйте DefaultOffset.

Поэтому, хотя я могу вернуть два смещения независимо, мне бы хотелось, чтобы один объект смещения содержал один или другой в зависимости от того, существует ли смещение отклика.

...