2015-10-19 5 views
0

Я не уверен, в чем проблема, но я должен делать что-то неправильно, поскольку индекс пуст, даже если я удаляю строку where b.Status == .... Любые идеи?RavenDB Указатель на вложенное свойство словаря

public class Bookings_ToBeScheduled : AbstractIndexCreationTask<Inspection, BookingRequest> 
{ 
    public Bookings_ToBeScheduled() 
    { 
     Map = inspections => 
      from i in inspections 
      from b in i.Bookings.Values 
      where b.Status == BookingStatus.Requested || b.Status == BookingStatus.InspectorAssigned 
      select new 
      { 
       InspectionId = i.Id, 
       i.InspectionType, 
       b.BookingNumber 
      }; 
    } 
} 

ответ

0

Попробуйте это вместо:

public class Bookings_ToBeScheduled : AbstractIndexCreationTask<Inspection, BookingRequest> 
{ 
    public Bookings_ToBeScheduled() 
    { 
     Map = inspections => 
      from i in inspections 

      select new 
      { 
       InspectionId = i.Id, 
       i.InspectionType, 
/* 
BookingNumber = i.Bookings.Values 
      .Where(b => b.Status == BookingStatus.Requested || b.Status == BookingStatus.InspectorAssigned) 
      .Selcet(b=> b.BookingNumber) 

*/ 
       BookingNumber = from b in i.Bookings.Values 
           where b.Status == BookingStatus.Requested || b.Status == BookingStatus.InspectorAssigned 
           select b.BookingNumber 
      }; 
    } 
} 

Это, как правило, лучше не иметь разветвление (несколько записей в документ) в индексе. Я не уверен в верхней части головы, какая версия BookingNumber будет работать, метод Linq, безусловно, будет.

+0

Спасибо Айенде, я нашел решение. Проблема заключалась в выборе словаря «.Values», поэтому это сработало для меня - из b в i.Bookings, затем используя b.Value.BookingNumber – CRG

Смежные вопросы