使用Contains id检索数据

时间:2012-12-03 17:28:08

标签: linq ravendb

Raven DB给了我这条消息

  

不支持的方法:包含

代码:

 using (var d = DataLayer.RavenDB.d.OpenSession())
    {
      foos = d.Query<Foo>().Where(foo => ids.Contains(foo.Id)).Skip(i * 10).Take(10).ToList();
    }

如何检索我的列表foos

2 个答案:

答案 0 :(得分:2)

看起来您正在尝试按ID查询多个文档。在Raven中不建议通过Id查询。加载它们。有一个需要多个ID的重载。

foos = session.Load<Foo>(ids);

如果这是其他属性而不是ID,则使用item.In(list)而不是list.Contains(item)

答案 1 :(得分:1)

如果你想根据id列表加载文档,那么按照Matt建议的解决方案,性能明智的Load()是最好的方法。

但是如果你仍然希望使用Query(使用一些contiions)来改变代码,那么

using (var d = DataLayer.RavenDB.d.OpenSession())
    {
         foos = d.Query<Foo>()
                 .Where(foo => foo.Id.In<string>(ids))
                 .Skip(i * 10)
                 .Take(10).ToList();
    }