1

我的印象FirstOrDefault(lambda)是对集合的影响与Where(lambda).FirstOrDefault()LINQ to EF 中的相同。然后我在代码中发现了这个问题,以便从我的数据库中查找指定年份最近创建的项目

Private Function MostRecentItemByYear(year As Integer) As Item
    Dim jan1 As New Date(year, 1, 1)
    Dim dec31 As New Date(year, 12, 31)

    Return MyContext.Items.OrderByDescending(Function(i) i.DateCreated) _
                          .FirstOrDefault(Function(i) i.DateCreated.HasValue AndAlso i.DateCreated >= jan1 AndAlso i.DateCreated <= dec31)
End Function

该代码失败

无法创建类型为“MyCompany.Domain.Models.Item”的常量值。此上下文仅支持原始类型或枚举类型。

Return MyContext ...线。但是,如果我将 lambda 移动到 aWhereFirstOrDefault单独调用,它会完美运行。

Private Function MostRecentItemByYear(year As Integer) As Item
    Dim jan1 As New Date(year, 1, 1)
    Dim dec31 As New Date(year, 12, 31)

    Return MyContext.Items.OrderByDescending(Function(i) i.DateCreated) _
                          .Where(Function(i) i.DateCreated.HasValue AndAlso i.DateCreated >= jan1 AndAlso i.DateCreated <= dec31) _
                          .FirstOrDefault()
End Function
4

0 回答 0