我已使用以下语法定义了索引:
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 { ... }
}
}
通过Raven Studio查询此索引按预期工作,但如何使用LINQ API执行相同的查询?问题是“As”扩展方法不适用于IDocumentQuery,但仅适用于 var query = _db.Advanced.LuceneQuery() 。。如()ToArray的();
我也尝试过以下内容:
var results = _db.Advanced.LuceneQuery<TestCase, TestCasesForConfigurationModeIndex>()
.WhereEquals(x => x.CurrentName, searchExpression).Fuzzy((decimal)0.5);
.AsQueryable().As<TestCaseForConfigurationMode>().ToArray();
这种工作(服务器控制台向我显示“结果:7个总共返回7个。”这是正确的),但我没有得到任何结果(空数组)。
答案 0 :(得分:3)
您可以使用SelectFields<>,例如:
Session.Advanced.LuceneQuery<IndexModel, Index>()
.Where("Name:(Bill) ...")
.SetResultTransformer("MyResultTransformer")
.SelectFields<MyResultTransformer.Result>()
.ToList();
中有结果变形者(本例中为MyResultTranformer)
答案 1 :(得分:0)
您可能需要使用:
using Raven.Client.Linq;
导入As扩展方法。
答案 2 :(得分:-1)
尝试使用.OfType<T>()
代替.As<T>()
。它们是相同功能的同义词。
此外,您不一定需要转换结果才能使用它(取决于您正在做的事情)。