索引我已經定義的語法如下指標:使用LINQ與Lucene的查詢與現場投影
public class TestCasesForConfigurationModeIndex
: AbstractIndexCreationTask<TestCase>
{
TestCasesForConfigurationModeIndex()
{
Map = docs => from x in docs select new { x.CurrentName }
Indexes.Add(x => x.CurrentName, FieldIndexing.Analyzed);
TransformResults = ... select new TestCaseForConfigurationMode { ... }
}
}
查詢通過烏鴉工作室這個指標正常工作,但我怎麼能執行相同的查詢使用LINQ API?問題是「As」擴展方法不適用於IDocumentQuery,但僅適用於 var query = _db.Advanced.LuceneQuery() .As()。ToArray();
我也試過類似如下:
var results = _db.Advanced.LuceneQuery<TestCase, TestCasesForConfigurationModeIndex>()
.WhereEquals(x => x.CurrentName, searchExpression).Fuzzy((decimal)0.5);
.AsQueryable().As<TestCaseForConfigurationMode>().ToArray();
這種作品(在服務器控制檯顯示我「結果:7返回共有7個」,這是正確的),但我不返回任何結果(空數組)。
的作爲擴展方法是有效的類型IQueryable的對象,但lucene查詢的類型是IDocumentQuery,它不實現IQueryable。我現在使用以下骯髒的解決方法,但希望有一個更好的解決方案可用的開箱即用: var serializer = JsonExtensions.CreateDefaultJsonSerializer(); var results = query.QueryResult.Results.Select(x => serializer.Deserialize(new RavenJTokenReader(x), typeof(TestCaseForConfigurationMode))) ).ToArray(); –
ollifant