内联如果运行条件的所有部分语句

时间:2016-06-13 06:22:51

标签: c# linq

我有一种方法可以通过FromDate过滤所有票证。 我的代码是这样的:

public List<Model.Ticket> SelectList(DateTime? fromDate = null)
{
    db.Tickets.Where(row=> (!fromDate.HasValue || (fromDate.HasValue ? (row.Date.Date >= fromDate.Value.Date) : false));
}

但是当传递null时它返回一个异常:

  

Nullable对象必须有值。

出了什么问题?

3 个答案:

答案 0 :(得分:2)

你需要通过FromDate过滤所有Ticket,但是在你的where条件只会根据你作为参数传递的formdate返回true或false。但是where条件期望逻辑从表中过滤数据你必须修改你所处的条件

where(ticket=>ticket.formDate--here what ever the condition you need to apply)

注意:对于你的lambda表达式(  db.Tickets.Where(!fromDate.HasValue || (fromDate.HasValue ? (row.Date.Date >= fromDate.Value.Date) : false)) ) db查询将是

 select * from Tickets where true/false--acording to the output 

这不会起作用

答案 1 :(得分:0)

也许在你的对象声明中你必须初始化它

答案 2 :(得分:0)

使用new关键字初始化为空。由于直接将null赋值给某个对象并不能携带所需的内容。调试仍然显示null的值,但它不能同样实例化。