概述:
我正在编写FetchXML查询,以在Dynamics 2015在线CRM实例中返回已禁用邮箱的用户。现在我来到一个需要将查询结果绑定到ListView的阶段。 (该项目使用Dynamics SDK 2015 libs。)
为了做到这一点,我试图转换返回的结果,这是一个EntityCollection - >到列表。但是在我的演员代码中找不到import operator
ops = { '+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.div }
import sys
print str(sys.argv)
array = sys.argv
i = 1
my_stack = []
while i < len(array):
# if array[i] == float(array[i]) or array[i] == int(array[i]):
if array[i] != '+' or array[i] != '-' or array[i] != '*' or array[i] != '/':
my_stack.insert(0, array[i])
else:
answer = ops[array[i]](float(my_stack[1]),float(my_stack[0]))
my_stack.pop(1)
my_stack.pop(0)
my_stack.insert(0, answer)
i = i + 1
print my_stack[0]
。
我正在按照这个例子的第二个答案来进行投射:
Convert Entity Collection to Ilist where Entity Collection does not implement IEnumerable
问题:
有谁知道如何引用CRMSDKTypeProxy?或者将我的收藏品投射到列表的任何替代方法?
代码:(简短示例)
CRMSDKTypeProxy
答案 0 :(得分:8)
您可以使用ToEntity<T>
方法转换为类似强类型的实体:(在此代码段service
中是实现IOrganizationService
接口和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();
我注意到您正在使用CrmServiceClient
命名空间中的Microsoft.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();
答案 1 :(得分:2)
@Henk van Boeijen部分正确。而不是在他的示例中使用service.Retrieve将其替换为您的svcClient.GetEntityDataByFetchSearchEC(DisabledMailBoxUsersFetchXML)调用。
var userList = svcClient.GetEntityDataByFetchSearchEC(DisabledMailBoxUsersFetchXML).Entities.Select(e => e.ToEntity<SystemUser>());
如果您没有使用早期绑定实体,那么您只需在Entity集合上调用.ToList()即可。
var userList = svcClient.GetEntityDataByFetchSearchEC(DisabledMailBoxUsersFetchXML).Entities.ToList();
EntityCollection的Entities属性是一个扩展Collection对象的DataCollection,您可以调用常用方法。