아마도 간단한 질문이지만 AsQueryable()
에 성능 손실이 있습니까?AsQueryable()은 내부적으로 어떻게 작동합니까?
일반적으로 우리가 RavenDB로 작업하는 말하기와 우리가 어디 절 우리를 반환이
protected override IQueryable<T> QueryableIndexRawQuery(string rawQuery, int skip = 0, int take = 128, string indexName = null)
{
var defaultIndexName = !string.IsNullOrWhiteSpace(indexName) ? indexName : string.Format("{0}{1}", typeof(T).Name, IndexPreffix);
return this.Session.Advanced.DocumentStore.DatabaseCommands.GetIndex(defaultIndexName) != null
? this.Session.Advanced.LuceneQuery<T>(defaultIndexName).Statistics(out this.Statistics).Skip(skip).Take(take).Where(rawQuery).AsQueryable()
: this.Session.Advanced.LuceneQuery<T>().Statistics(out this.Statistics).Skip(skip).Take(take).Where(rawQuery).AsQueryable();
}
과 같은 코드를 기존 한 것은 IDocumentQuery
우리는 그것을 AsQueryable()
this.Session.Advanced.LuceneQuery<T>(defaultIndexName).Statistics(out this.Statistics).Skip(skip).Take(take).Where(rawQuery)
질문 무엇 AsQueryable()
결국을 표현하려고 내부적으로합니까? 어떻게 변환합니까? List<>
과 같은 메모리 내 수집 예제를 사용한 답이 실제로 유용 할 것입니다. 이처럼
:
var list = new List<string>() { "1", "2", "3" };
list.AsQueryable();
이것은 복잡하지만 [이 페이지의 Jon Skeet이 다소 설명했습니다.] (http://msmvps.com/blogs/jon_skeet/archive/2011/02/20/reimplementing-linq-to-objects-part- 43-out-of-process-queries-iqueryable.aspx). –