在EF方法语法

时间:2015-10-08 16:08:37

标签: c# entity-framework linq

        //This works, but seems incorrect to me
        Object selection = db.ExampleTable
                             .Where(s => s.Id == id)
                             .Select(s => new { s.Id, s.PropIWantToShow })
                             .SingleOrDefault();

        //This seems correct, but does not work
        Object selection = db.ExampleTable
                              .SingleOrDefault(s => s.Id == id)
                              .Select(s => new { s.Id, s.PropIWantToShow });

db是我们的实体框架数据上下文。

我的目标是在ExampleTable中选择与提供的ID匹配的单个条目。如果找不到条目,​​则返回null。但是,EF似乎不允许我选择单个对象,然后只返回特定属性。我如何完成这个或者是我提供的第一个例子?

我确实检查了这个问题: select properties of entity ef linq

  

很遗憾,您无法有条件地加载相关实体的属性 - 您要么加载整个门实体,要么不包含该实体。

但答案似乎并不合适,但很明显"似乎"是一个非常弱的声明。

1 个答案:

答案 0 :(得分:0)

如果您希望函数在条件不匹配时返回null,则使用FirstorDefault()而不是SingleorDefalut()。因此,如果您想匹配一个id并返回一个对象,那么就这样做:

return db.ExampleTable.FirstorDefault(c=>c.Id == id);