返回一个IEnumerable?

Joh*_*ohn 0 c# asp.net ienumerable asp.net-mvc-3

这是回归IEnumerable还是IQueryable

public IEnumerable<OrderRecord> GetAll()
{
    return _repository.Table.Where(x => x.ClientAccount.Id == _userSession.GetCurrentClientAccount()).AsEnumerable();
}   
Run Code Online (Sandbox Code Playgroud)

然后,使用断点@ IEnumerable,它不会返回IEnumerable?为什么QueryableNHibernate.Linq.NhQuerable(调试的第一行)中说出来?

Mar*_*zek 7

它返回一些实现的东西IEnumerable<T>.那个事实同时实现的IQueryable<T>事实并不重要.

这同样适用于以下情况:

public ICollection<string> GetCollection()
{
    return new List<string>();
}
Run Code Online (Sandbox Code Playgroud)

如果您尝试检查从GetCollection您返回的内容,将获得实际的类名称,List<string>在该示例中.但是因为方法签名声明它返回,ICollection<T>你只能访问由ICollection<T>接口公开的方法/属性(ofc.除非你明确地将它返回到List<string>).