4

我有这个代码:

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 || 乙?

4

1 回答 1

4

IQueryable<T>它本身继承自IEnumerable<T>,因此它比IEnumerable<T>, 更具体,即使ObjectQuery<T>实现了两个通用接口。

于 2012-06-22T15:13:27.807 回答