如何查找相关实体的最高或最低价值? 我试图使用带有导航属性的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
答案 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()