Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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
C# 如何编写索引以获取RavenDB中跨文档的集合中的对象总数?_C#_Ravendb - Fatal编程技术网

C# 如何编写索引以获取RavenDB中跨文档的集合中的对象总数?

C# 如何编写索引以获取RavenDB中跨文档的集合中的对象总数?,c#,ravendb,C#,Ravendb,我将以下对象保存为数据库中的文档: public class ClientContactsModel { public ClientContactsModel() { Contacts = new List<ContactItem>(); } public Guid Id { get; set; } public Guid ClientId { get; set; } public List<ContactIte

我将以下对象保存为数据库中的文档:

public class ClientContactsModel
{
    public ClientContactsModel()
    {
        Contacts = new List<ContactItem>();
    }

    public Guid Id { get; set; }
    public Guid ClientId { get; set; }
    public List<ContactItem> Contacts { get; set; }
}
公共类客户端联系人模型
{
公共客户端联系人模型()
{
联系人=新列表();
}
公共Guid Id{get;set;}
公共Guid客户端ID{get;set;}
公共列表联系人{get;set;}
}

如何编写一个索引来计算每个ClientContactsModel对象中的联系人数量,以获得联系人总数?

我能够计算出这一个:

public class Contacts_GetCount: AbstractIndexCreationTask<ClientContactsModel, Contacts_GetCount.ContactResult>
{
    public class ContactResult
    {
        public Guid ClientId { get; set; }
        public int Total { get; set; }
    }

    public Contacts_GetCount()
    {
        Map = contacts => from contact in contacts
            select new {
                ClientId = contact.ClientId,
                Total = contact.Contacts.Count
            };

        Reduce = results => from result in results
            group result by result.ClientId
            into g
            select new {
                ClientId = g.Key,
                Total = g.Sum(x=>x.Total)
            };
    }
}
公共类联系人\u GetCount:AbstractIndexCreationTask
{
公共类ContactResult
{
公共Guid客户端ID{get;set;}
公共整数总计{get;set;}
}
公共联系人_GetCount()
{
映射=联系人=>来自联系人中的联系人
选择新的{
ClientId=contact.ClientId,
总计=contact.Contacts.Count
};
Reduce=results=>from result in results
按result.ClientId对结果进行分组
进入g
选择新的{
ClientId=g.键,
总计=g.Sum(x=>x.Total)
};
}
}

我缺少的部分是在文档映射中创建的匿名类型中输入集合的计数。

是否只需要联系人的总数?是每个客户,全球范围内吗?正确。我需要每个客户端的联系人总数。答案是理想的SelectMany,这还不受支持,但作为替代方案,RavenDB建议使用Map/Reduce索引。我自己仍在努力,一旦我有了解决方案,我会很乐意与大家分享。你正在运行什么版本的RavenDB?我提到的解决方案只适用于2.5及以上版本。