我这个函数有两个要求
仅返回
OrderDate
值不为 null 的订单退回在参数年份指定的年份或更晚的订单
哪个 WHERE
语句满足要求?为什么?
static IQueryable<Order> lookUp (int year)
{
using (DataClasses1DataContext d = new DataClasses1DataContext())
{
var orders = from order in d.Orders
This line ==> where order.OrderDate.HasValue && order.OrderDate.Value.Year >=year
OR ==> where order.OrderDate.Value!=null && order.OrderDate.Value.Year >=year
select order;
return orders.ToList();
}
}
最佳答案
HasValue
会告诉你它是否为空。 Value
将获取非空值,如果为空则抛出异常。由于您不想抛出 null 值,因此不应使用第二个。
使用 != null
(在可空值本身上,而不是在它的 .Value
上)相当于使用 HasValue
(编译器生成一个 HasValue
调用)。那么,以下内容都是有效的,使用哪一个是一种风格选择。
where order.OrderDate.HasValue && ...
where order.OrderDate != null && ...
关于c# - 比较两个 LINQ 查询,其中语句 Hasvalue 与 !=null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23983968/