2017-07-06 3 views
1

IEnumerable型のプロパティをクエリして、このプロパティの整数値を含むコレクション内のすべてのドキュメントを検索しようとしています。intの配列にインデックスできませんRavenDB

私は、クエリを満たすIDのリストを返すために、プロパティのインデックスでこれを達成しようとしました。私はidの質問を投影していますが、私はid 0のリストを取得しています。

インデックス

public class Merchants_CategoryId : AbstractIndexCreationTask<Merchant> 
{ 
    public class Result 
    { 
     public int MerchantId { get; set; } 
     public IEnumerable<int> CategoryIds { get; set; } 
    } 

    public Merchants_CategoryId() 
    { 
     Map = merchants => merchants.Select(merchant => new 
     { 
      CategoryIds = merchant.Header.CategoryIds, 
      MerchantId = merchant.Header.Id 
     }); 
    } 
} 

クエリ

return await session 
       .Query<Merchants_CategoryId.Result, Merchants_CategoryId>() 
       .Where(x => x.CategoryIds.Any(c => c == categoryId)) 
       .Select(x => x.MerchantId) 
       .ToListAsync(); 

答えて

0

インデックス:

public class Merchants_CategoryId : AbstractIndexCreationTask<Merchant> 
{ 
     public class Result 
     { 
      public int MerchantId { get; set; } 
      public int CategoryId { get; set; } 
     } 


     Map = merchants => from merchant in merchants 
         from categoryId in merchant.Header.CategoryIds 
         select new 
         { 
          MerchantId = merchant.Header.Id, 
          CategoryId = categoryId 
         }; 

     Index(x => x.CategoryId, FieldIndexing.Yes); 
     Store(x => x.MerchantId, FieldStorage.Yes); 
} 

問合せ:

return await session 
      .Query<Merchants_CategoryId.Result, Merchants_CategoryId>() 
      .Where(x => x.CategoryId == categoryId) 
      .Select(x => x.MerchantId) 
      .ToListAsync(); 
+0

これはまだ、0の加盟店IDのリストを返しています。 – whiteangeleyes

+0

@whiteangeleyes私は私の答えを編集しました – Embri

関連する問題