2014-02-20 89 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

相關問題