在Map Function中使用SelectMany时,RavenDB索引无法正常工作

ms0*_*007 2 ravendb

根据Ayende的这篇文章,我创建了以下索引定义

public class ProductsSearch : AbstractIndexCreationTask<Product, ProductsSearch.Result>
{
    public class Result
    {
        public string Query { get; set; }
    }

    public ProductsSearch()
    {
        Map = products => from product in products
                          select new
                          {
                              Query = new object[]
                              {
                                  product.Title,
                                  product.Tags.Select(tag => tag.Name),
                                  product.Tags.SelectMany(tag => tag.Aliases, (tag, alias) => alias.Name)
                              }
                          };

        Index(x => x.Query, FieldIndexing.Analyzed);
    }
}
Run Code Online (Sandbox Code Playgroud)

一个区别是我必须使用SelectMany语句来获取标记的别名.标签可以有多个别名(即标签:鼠标别名:指点设备)

我不知道为什么SelectMany行会破坏索引.如果我删除它,索引工作.

Mat*_*ren 5

这应该工作:

Map = products => from product in products
                  from tag in product.Tags
                  from alias in tag.Aliases
                      select new
                      {
                          Query = new object[]
                          {
                              product.Title,
                              tag.Name,
                              alias.Name
                          }
                      };
Run Code Online (Sandbox Code Playgroud)