返回相关实体中具有最高/最低值的实体

时间:2014-03-24 20:53:26

标签: .net linq entity-framework lambda navigation-properties

如何查找相关实体的最高或最低价值? 我试图使用带有导航属性的LINQ / lambda但遇到NullReferenceException。

Dim e As employee = Me.employees
       .OrderBy(Function(x) x.car.car_age.GetValueOrDefault(1000))
       .First()

If e IsNot Nothing Then Return e.car.car_age

使用数据,案例

雇员

id  name   car_id
1   John   1
2   Mark   2
3   Steve  3

id  car_age
1   15
2   [Null]
3   8
4   19
5   3

员工与汽车一对一的关系。

在寻找最高价值时,我需要得到员工" John"来自查询。 在寻找最低价值时,我需要"史蒂夫"。 car_age在数据库中也可以为null。

Berfore调用上述内容,使用以下命令从数据库中检索实体

Dim query = From e In _context.employees.Include("car")
            Select e

2 个答案:

答案 0 :(得分:2)

堆栈跟踪表明您的员工没有汽车。您确定您拥有的唯一数据是您在帖子中显示的数据吗?

如果您尝试这样做会发生什么:

Dim e As employee = Me.employees
    .Where(Function(x) x.car IsNot Nothing)
    .OrderBy(Function(x) x.car.car_age.GetValueOrDefault(1000))
    .FirstOrDefault()

应用程序是否仍然崩溃?如果没有,那么问题就在于:有些员工没有车。

答案 1 :(得分:0)

我认为你想要的东西是:

Dim e As employee = Me.employees
   .Where(Function(x) x.car.car_age IsNot Nothing)
   .OrderBy(Function(x) x.car.car_age.GetValueOrDefault(1000))
   .First()