也许这是一个简单的问题,但是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();
}
因此,Where子句将返回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();