Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ravendb 如何查询TIndexCreator_Ravendb - Fatal编程技术网

Ravendb 如何查询TIndexCreator

Ravendb 如何查询TIndexCreator,ravendb,Ravendb,我创建了以下索引: public class ReceiptsByClient : AbstractIndexCreationTask<Receipt> { public ReceiptsByClient() { Map = receipts => from r in receipts let d = LoadDocument<Debtor>(

我创建了以下索引:

public class ReceiptsByClient : AbstractIndexCreationTask<Receipt>
    {
        public ReceiptsByClient()
        {
            Map = receipts => from r in receipts
                              let d = LoadDocument<Debtor>(r.Receipt_Debtor)
                              select new { ClientId = d.Debtor_Client };
        }
    }
公共类ReceiptsByClient:AbstractIndexCreationTask
{
公共收据周期客户()
{
Map=收据=>收据中的r
设d=装载单据(r.收据\债务人)
选择新的{ClientId=d.d\u Client};
}
}
现在,我想对该索引进行如下查询:

var rptQry = Session.Query<Receipt, ReceiptsByClient>()
var rptQry=Session.Query()
当然,我希望能够在Where子句中传递ClientId的值。但是,where子句的T是Receipt类型,不知道ReceiptsByClient中定义的匿名类型的ClientId。 如何使用我的ReceiptsByClient索引进行查询?

Raven几乎可以处理所有与索引匹配的查询。您只需要一个类型,该类型具有要查询的字段:

public class Foo
{
    public string ClientId { get; set; }
}
然后在查询中使用它,并使用
As
将其返回,这样您的结果才是真正的类

var q = session.Query<Foo, ReceiptsByClient>()
               .Where(x=> x.ClientId == "clients/123")
               .As<Receipt>();
var q=session.Query()
.Where(x=>x.ClientId==“clients/123”)
.As();

请注意,
ClientId
字段不会出现在结果中。如果您想这样做-您必须使用
store(x=>x.ClientId,FieldStorage.Yes)
将字段存储在索引中,然后在查询中使用
AsProjection
将类型转换为具有所有字段的类。

我需要什么样的使用语句才能将As纳入范围?