//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:
很遗憾,您无法有条件地加载相关实体的属性 - 您要么加载整个门实体,要么不包含该实体。
但答案似乎并不合适,但很明显"似乎"是一个非常弱的声明。
答案 0 :(得分:0)
如果您希望函数在条件不匹配时返回null,则使用FirstorDefault()
而不是SingleorDefalut()
。因此,如果您想匹配一个id并返回一个对象,那么就这样做:
return db.ExampleTable.FirstorDefault(c=>c.Id == id);