gpt4 book ai didi

c# - 如何将 Xrm.EntityCollection 转换为列表?

转载 作者:行者123 更新时间:2023-11-30 13:36:19 28 4
gpt4 key购买 nike

概述:

我正在编写一个 FetchXML 查询,以返回 Dynamics 2015 在线 CRM 实例中邮箱被禁用的用户。现在我已经到了需要将查询结果绑定(bind)到 ListView 的阶段。 (该项目正在使用 Dynamics SDK 2015 libs 。)

为了做到这一点,我尝试将返回的结果(EntityCollection)转换为一个列表。但是在我的转换代码中找不到 CRMSDKTypeProxy

我按照这个例子的第二个答案来进行转换:

Convert Entity Collection to Ilist where Entity Collection does not implement IEnumerable

问题:

有谁知道如何引用 CRMSDKTypeProxy?或者有其他方法可以将我的收藏转换到列表中吗?

代码:(简短示例)

if (ctrl.CrmConnectionMgr != null && ctrl.CrmConnectionMgr.CrmSvc != null && ctrl.CrmConnectionMgr.CrmSvc.IsReady)
{
CrmServiceClient svcClient = ctrl.CrmConnectionMgr.CrmSvc;
if (svcClient.IsReady)
{
// Get data from CRM .
string DisabledMailBoxUsersFetchXML =
@"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
<entity name='systemuser'>
<attribute name='fullname' />
<attribute name='businessunitid' />
<attribute name='title' />
<attribute name='address1_telephone1' />
<attribute name='positionid' />
<attribute name='systemuserid' />
<order attribute='fullname' descending='false' />
<link-entity name='mailbox' from='mailboxid' to='defaultmailbox' alias='aa'>
<filter type='and'>
<condition attribute='statecode' operator='eq' value='1' />
</filter>
</link-entity>
</entity>
</fetch>";

var DisabledMailBoxUsersResult = svcClient.GetEntityDataByFetchSearchEC(DisabledMailBoxUsersFetchXML);

if (DisabledMailBoxUsersResult != null)
{
//perform the cast here --->
var disabledMailBoxUsersList = (from t in DisabledMailBoxUsersResult.Entities select t as CRMSDKTypeProxy.SystemUser).ToList();
disabledMailboxUserLBx.ItemsSource = disabledMailBoxUsersList;
}
else
MessageBox.Show("All user's mailboxes are approved..");

}
}

最佳答案

您可以使用 ToEntity<T>转换为强类型实体的方法,如下所示:(在此代码段中,service 是一个实现 IOrganizationService 接口(interface)的对象,query 是一个 QueryExpression 对象。)

// RetrieveMultiple will never return null, so this one-liner is safe to use.
var userList = service.RetrieveMultiple(query)
.Entities
.Select(e => e.ToEntity<SystemUser>())
.ToList();

我注意到您正在使用 CrmServiceClientMicrosoft.Xrm.Tooling.Connector命名空间。这是在 Dynamics CRM 2013 中引入的。

您的代码可能如下所示:

var userList = svcClient.OrganizationServiceProxy
.RetrieveMultiple(new FetchExpression(fetchXml))
.Entities
.Select(e => e.ToEntity<SystemUser>())
.ToList();

或者这也应该有效:

var userList = svcClient.GetEntityDataByFetchSearchEC(fetchXml)
.Entities
.Select(e => e.ToEntity<SystemUser>())
.ToList();

关于c# - 如何将 Xrm.EntityCollection 转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35280788/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com