2014-02-20 58 views
0

这是返回IEnumerableIQueryable返回一个IEnumerable?

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

然后,使用断点@的IEnumerable,没有它返回一个IEnumerable? 为什么在NHibernate.Linq.NhQuerable(调试的第一行)中说Queryable

+1

对我来说这似乎是一个合理的问题。 –

回答

7

它返回一些东西,实现IEnumerable<T>。那件事情在实现IQueryable<T>的同时并不重要。

这同样适用于例如,以下情况:

public ICollection<string> GetCollection() 
{ 
    return new List<string>(); 
} 

,如果你尝试检查取之于GetCollection返回你会在那个例子中得到实际的类名,List<string>。但是由于方法签名规定它返回ICollection<T>,您将只能访问由ICollection<T>接口公开的方法/属性(ofc。除非您明确地将其重新设置为List<string>)。

3

NhQueryable<T>实施IQueryable<T>IEnumerable<T>

通过调用AsEnumerable(),您现在可以访问IEnumerable<T>方法将,例如,从内存中的集合原IQueryable<T>查询数据库中执行后运行其他LINQ的方法,如WhereSelect

1

它返回一个Nhibernate.Link.NhQueryable<ACCS.StockControl.Models.OrderRecord>类型的对象。

该类型恰好实现了IQueryable<ACCS.StockControl.Models.OrderRecord>,IEnumerable<ACCS.StockControl.Models.OrderRecord>IEnumerableinterfaces

相关问题