Linq 检索包含id的数据
Raven DB给了我这个消息 不支持的方法:包含 对于此代码:Linq 检索包含id的数据,linq,ravendb,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(); } 使用(var d=DataLayer.RavenDB.d.OpenSession()) { foo
using (var d = DataLayer.RavenDB.d.OpenSession())
{
foos = d.Query<Foo>().Where(foo => ids.Contains(foo.Id)).Skip(i * 10).Take(10).ToList();
}
使用(var d=DataLayer.RavenDB.d.OpenSession())
{
foos=d.Query().Where(foo=>ids.Contains(foo.Id)).Skip(i*10.Take(10.ToList();
}
如何检索我的列表
foos
?看起来您正在尝试按id查询多个文档。Raven中不建议按id查询。而是加载它们。存在接受多个ID的重载
foos = session.Load<Foo>(ids);
foos=session.Load(id);
如果这是其他属性,而不是Id,则应使用(列表)中的
item.In,而不是list.Contains(item)
看起来您正在尝试按Id查询多个文档。在Raven中不建议按Id查询。而是加载它们。存在接受多个ID的重载
foos = session.Load<Foo>(ids);
foos=session.Load(id);
如果这是其他属性,而不是Id,则可以使用item.In(list)
而不是list.Contains(item)
如果要根据Id列表加载文档,请使用Matt建议的解决方案,性能方面的加载()是最好的方法
但是,如果您仍然希望使用查询(使用一些where contiion)获得它,请更改如下代码
using (var d = DataLayer.RavenDB.d.OpenSession())
{
foos = d.Query<Foo>()
.Where(foo => foo.Id.In<string>(ids))
.Skip(i * 10)
.Take(10).ToList();
}
使用(var d=DataLayer.RavenDB.d.OpenSession())
{
foos=d.Query()
.Where(foo=>foo.Id.In(Id))
.跳过(i*10)
.采取(10)措施;
}
如果要根据ID列表加载文档,请使用Matt建议的解决方案,performance wise load()是最佳方法
但是,如果您仍然希望使用查询(使用一些where contiion)获得它,请更改如下代码
using (var d = DataLayer.RavenDB.d.OpenSession())
{
foos = d.Query<Foo>()
.Where(foo => foo.Id.In<string>(ids))
.Skip(i * 10)
.Take(10).ToList();
}
使用(var d=DataLayer.RavenDB.d.OpenSession())
{
foos=d.Query()
.Where(foo=>foo.Id.In(Id))
.跳过(i*10)
.采取(10)措施;
}
您知道它是否会在其查询后的查询中过滤不需要的元素吗?如果这是您所要求的,则查询过滤将在服务器端进行。您知道它是否会在其查询后的查询中过滤不需要的元素吗?如果这是您所要求的,则查询过滤将在服务器端进行。