为什么在调用方法IQueryable.FirstOrDefault()时总是返回null?

时间:2012-06-06 13:57:37

标签: linq entity-framework expression

 public class CellValue
{
    double? Max;
    double? Min;
    string  Value;
    string Annotation;
}

    public T GetOne(Expression<Func<T, bool>> predicate)
{
     IQueryable<T> query = this.context.Set<T>();
     return query.FirstOrDefault(predicate);
}

    public class Steel: CellValue{}

    CellValue cell = new CellValue{Max = 0.8, Min = 0.1, Value="test"};
    Steel steel = service.GetOne(t=>t.Max == cell.Max && t.Min == cell.Min && t.Value ==cell.Value && t.Annotation == cell.Annotation);
    //but the object steel is always null. Jush Why?

我检查了我的数据库,但我不知道它总是为null。表达式树和Lambda表达式可能是问题所在。

1 个答案:

答案 0 :(得分:1)

“OrDefault”方法为引用类型返回null,或者为值类型返回默认值(例如int是值类型,因此它将返回0)。