在CRM中将EntityCollection复制到Dictionary

时间:2016-01-11 11:47:55

标签: crm dynamics-crm-2013 adxstudio-portals

我想将我的EntityCollection转换或复制到Dictionary。 我的代码如下。 请同样建议。

Dictionary<string, string> dictionary = new Dictionary<string, string>();
EntityCollection contentCollection = orgService.RetrieveMultiple(new FetchExpression(contentQuery));

if (contentCollection != null && contentCollection.Entities != null && contentCollection.Entities.Count > 0)
{
    foreach (Entity contents in contentCollection.Entities)
    {
        dictionary.Add(content.Attributes(0).key,content.Attributes(0).value );
    }
}

2 个答案:

答案 0 :(得分:1)

它可以简短:

EntityCollection contentCollection = orgService.RetrieveMultiple(new FetchExpression(contentQuery));
Dictionary<Guid, Entity> dictionary = contentCollection.Entities.ToDictionary(entity => entity.Id);

您无需检查contentCollection及其Entities集合,因为方法RetrieveMultiple始终返回非空值或未能抛出异常。

或者你可以把它写成一个声明:

var dictionary = orgService
    .RetrieveMultiple(new FetchExpression(contentQuery))
    .Entities
    .ToDictionary(entity => entity.Id);

答案 1 :(得分:0)

我有一个开源项目可以使这更简洁:

var dictionary = orgService
    .GetEntities<Entity>(new FetchExpression(contentQuery)
    .ToDictionary(e => e.Id);

您可以从GitHub下载它:https://github.com/daryllabar/XrmUnitTest(参考DLaB.Xrm库) 或NuGet:Install-Package DLaB.Xrm -Version 1.0.1

获取实体处理检索并返回一个List(用于后期绑定)或List(或者您为早期绑定检索的任何类型)