我有这段代码:
IEnumerable<string> q = customers /*EF entity*/
.Select (c => c.Name.ToUpper())
.OrderBy (n => n)
要选择实体,ObjectContext实际上创建了ObjectQuery,其中 实现IQueryable。从ObjectQuery返回的对象不是 普通对象,但是EntityObject
但如果我写的话:(注意var
)
var q = customers /*EF entity*/
.Select (c => c.Name.ToUpper())
.OrderBy (n => n)
可以确定ienumerable
或 iqueryable
:
因为ObjectQuery
同时实施IEnumerable
...
我不知道是否有任何特定的信息告诉编译器“使用A而不是B. A更具体......”(必须......我只是无法找到它)
任何帮助?怎么知道使用A || B?
答案 0 :(得分:4)
IQueryable<T>
itself inherits from IEnumerable<T>
,因此它比IEnumerable<T>
更具体,即使ObjectQuery<T>
实现了两个通用接口。