我在RavenDb中存储了以下类:
public class User
{
public string Id {get;set;}
public string Name {get;set;}
public IList<string> Phrases {get;set;}
}
我想要所有用户的所有不同短语。
解决方案1(未经测试)
session.Query<User>().SelectMany(c=>c.Educations).Distinct();
您认为这种方法会出现性能问题吗?
解决方案2(已测试) 使用谷歌我发现session.Advanced.DatabaseCommands.GetTerms()很适合获取属性的不同值。但是这里我有一个List属性。 根据这个:
在您看来,哪种方法更好?其他更好/更简单的解决方案?
感谢。
答案 0 :(得分:4)
如果您编写索引,如下所示:
from user in docs.Users
from phrase in user.Phrases
select new { phrase }
然后session.Advanced.DatabaseCommands.GetTerms()
将起作用,因此您可以使用解决方案2 而不会增加复杂性。
我认为 解决方案2 将是最有效的,因为它直接从Lucene索引中获取条款,但您必须进行基准测试它可以肯定地知道。