当在编译时不知道这些术语时,是否建议使用StartsWith搜索多个术语中的每个术语?
我想象这样的事情:
var searchTerms = "John Doe".Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var query = session.Query<Person, PersonIndex>()
.Where(x => x.FirstName.StartsWithAnyOf(searchTerms) ||
x.LastName.StartsWithAnyOf(searchTerms));
Run Code Online (Sandbox Code Playgroud)
查询将相当于:
var query = session.Query<Person, PersonIndex>()
.Where(x => x.FirstName.Starts(searchTerms[0]) ||
x.LastName.StartsWith(searchTerms[0]) ||
x.FirstName.Starts(searchTerms[1]) ||
x.LastName.StartsWith(searchTerms[1]));
Run Code Online (Sandbox Code Playgroud)
是在运行时(PredicateBuilder或类似)构建LINQ查询的答案吗?
使用 LuceneQuery(可能需要使用子条款,具体取决于您正在执行的其他操作):
var searchTerms = "John Doe".Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var query = session.Advanced.LuceneQuery<Person, PersonIndex>();
query = query.OpenSubclause(); // optional
foreach (var term in terms)
{
query = query.WhereStartsWith("FirstName"), term).OrElse();
query = query.WhereStartsWith("LastName"), term).OrElse();
}
query = query.WhereEquals("Id", null);
query = query.CloseSubclause(); // if OpenSubclause() was used
Run Code Online (Sandbox Code Playgroud)
如果您想要强类型变量名称,请查看此答案:/sf/answers/21137021/
归档时间: |
|
查看次数: |
1104 次 |
最近记录: |