0
我是RavenDB的新手,我正在努力解決這個簡單的問題。 我有一個擁有訂閱集合的訂閱者。我想通過訂閱的字段進行搜索,並返回相關的訂閱者。通過RavenDB中的嵌套集合元素查詢條目
下面是簡單的例子類:
public class Subscriber
{
public string Email { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public List<Subscription> Subscriptions { get; set; }
}
public class Subscription
{
public Guid Id { get; set; }
public string EventType { get; set; }
}
我試圖讓一個索引,因爲它是在RavenDB文檔說:
public class Subscriber_BySubscription : AbstractIndexCreationTask<Subscriber>
{
public Subscriber_BySubscription()
{
Map = subscribers => from subscriber in subscribers
from subscription in subscriber.Subscriptions
select new
{
subscription.EventType,
subscription.QueueName
};
}
}
但我不知道這是我需要什麼,因爲使用Select
和Contains
收集查詢不起作用。此外,代碼看起來非常難看,我覺得這不是它應該如何的方式。
所以,我想通過EventType查詢訂閱,並有相應的訂閱者作爲結果。在LINQ中,它看起來是這樣的:subscribers.Where(x => x.Subscriptions.Select(c => c.EventType).Contains(myEventType))
請注意,這會更好: '地圖=用戶=>從用戶在用戶 選擇新 {EventType = subscriber.Subscriptions.Select(x => x.EventType) };' 這會爲每個文檔生成一個值,從而避免扇出 –