使用LINQ语句当一个为NULL时返回两个对象之一的问题

时间:2019-05-08 10:46:15

标签: .net linq .net-core entity-framework-core

我正在努力实现似乎是一个相对简单的LINQ语句,在该语句中,我希望根据两个位置之一是否存在从两个位置之一返回一个对象,并且每次转动都会收到以下错误。 / p>

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。

因此,尽管我可以独立返回两个Offset,但我希望一个Offset对象包含一个或另一个对象,具体取决于Response偏移是否存在。

0 个答案:

没有答案