我尝试使用 LAMBDA 表达式做一个简单的“LIKE”查询CreateDocumentQuery
;但是在尝试.Contains
并且SqlMethod.Like
两次都收到回复之后,NotImplementedException
我不知道接下来要尝试什么!
问问题
1579 次
2 回答
3
更新:截至2015年 5 月 6日,DocumentDB 添加了一组字符串函数,包括STARTSWITH
、ENDSWITH
和CONTAINS
. 请注意,这些函数中的大多数都不会在索引上运行,并且会强制进行扫描。
LIKE
并且CONTAINS
在 DocumentDB 中尚不支持。
您需要查看DocumentDB 反馈页面并对功能(例如LIKE和CONTAINS)进行投票以让您的声音被听到!
于 2014-11-06T22:51:30.850 回答
0
因为我只需要搜索较大对象的一个谨慎的属性子集,所以我实现了.Contains
如下搜索功能。尽管我对性能或可扩展性一无所知,但它按预期工作。
领域模型
public interface ITaxonomySearchable
{
string Name { get; set; }
string Description { get; set; }
}
public class TaxonomySearchInfo : ITaxonomySearchable {
[JsonProperty(PropertyName = "id")]
public Guid Id { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "description")]
public string Description { get; set; }
}
public class TaxonomyContainer : ITaxonomySearchable
{
[JsonProperty(PropertyName = "id")]
public Guid Id { get; set; }
[JsonProperty(PropertyName = "userId")]
public string UserId { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "description")]
public string Description { get; set; }
[JsonProperty(PropertyName = "tags")]
public string[] Tags { get; set; }
[JsonProperty(PropertyName = "taxonomy")]
public Node[] Taxonomy { get; set; }
}
搜索方法
public async static Task<List<TaxonomySearchInfo>> Search(string searchTerm)
{
var db = GetJsonDocumentDb.GetDb();
using (var client = GetJsonDocumentDb.GetClient())
{
var documentCollection = await GetJsonDocumentDb.GetDocumentCollection(db, client, "TaxonomyContainerCollection");
return client.CreateDocumentQuery<TaxonomySearchInfo>(documentCollection.DocumentsLink)
.AsEnumerable()
.Where(r => r.Name.Contains(searchTerm) || r.Description.Contains(searchTerm))
.ToList();
}
}
于 2014-11-08T01:16:39.757 回答