0

我想将我的 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 );
    }
}
4

2 回答 2

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);
于 2016-01-11T20:52:43.187 回答
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

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

于 2016-01-12T12:54:54.437 回答