4

我尝试使用 LAMBDA 表达式做一个简单的“LIKE”查询CreateDocumentQuery;但是在尝试.Contains并且SqlMethod.Like两次都收到回复之后,NotImplementedException我不知道接下来要尝试什么!

4

2 回答 2

3

更新:截至2015年 5 月 6日,DocumentDB 添加了一组字符串函数,包括STARTSWITHENDSWITHCONTAINS. 请注意,这些函数中的大多数都不会在索引上运行,并且会强制进行扫描。

LIKE并且CONTAINS在 DocumentDB 中尚不支持。

您需要查看DocumentDB 反馈页面并对功能(例如LIKECONTAINS)进行投票以让您的声音被听到!

于 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 回答