我用以下语法定义了一个索引:
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。as () ();
我还尝试了如下操作:
var results = _db.Advanced.LuceneQuery<TestCase, TestCasesForConfigurationModeIndex>()
.WhereEquals(x => x.CurrentName, searchExpression).Fuzzy((decimal)0.5);
.AsQueryable().As<TestCaseForConfigurationMode>().ToArray();
这种工作(服务器控制台显示我"结果:7个返回总数。"这是正确的),但我没有得到任何结果返回(空数组)。
您可以使用SelectFields<>,例如:
Session.Advanced.LuceneQuery<IndexModel, Index>()
.Where("Name:(Bill) ...")
.SetResultTransformer("MyResultTransformer")
.SelectFields<MyResultTransformer.Result>()
.ToList();
确保在单独的类
您可能需要使用:
using Raven.Client.Linq;
尝试使用.OfType<T>()
代替.As<T>()
。它们是相同功能的同义词。
同样,你不一定需要转换结果来使用它(取决于你在做什么)。