2012-06-21 118 views
1

我有一個Entity集合像這樣: EntityCollection users;將實體集合轉換爲實體集合不實現IEnumerable的Ilist

我想將其轉換爲Ilist這樣的:

systemUsers = new List<CrmSdkTypeProxy.SystemUser>(); 

其中CrmSdkTypeProxy.SystemUser是一種類型的Entity。但是,我的Entity收集來自dllMicrosoft.Xrm.Sdk,它不實施IEnumerable。我正在使用mscrm 2011特定dlls

有關如何創建如下列表的任何想法:.List<CrmSdkTypeProxy.SystemUser>

+0

關於使用'EntityCollection.Entities'屬性,它是一個數據收集''這是從'收藏'繼承什麼? – nemesv

+0

對不起,我刪除了我的答案,因爲我誤解了你的問題。 – martinstoeckli

+0

@ nemesv .. how do change DataCollection to IList ? –

回答

3
從我從 http://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.entitycollection_members.aspx收集和

我的頭頂:

var myList = (from t in myEntityCollection.Entities select t as CRMSDKTypeProxy.SystemUser).ToList(); 

和LINQ少:

var myList = new List<CRMSDKTypeProxy.SystemUser>(myEntityCollection.Entities); 
+0

我可以像這樣使用它:var myList = new List (users.Entities);但我的實際要求是:var myList = new List (users.Entities); –

+1

我認爲這是暗示與「MyEntity」,你可以真正把你喜歡的任何實體類型在那裏。但要非常非常清楚地更新我的答案。 – MatteS

0

最後......通過數據收集迭代,並添加到個人價值Ilist

3

這對我有效。

實體是一個DataCollection<Entity>你可以轉換爲IEnumerable,然後使用ToList函數來創建它,你需要IList接口匹配您的列表。

return service.RetrieveMultiple(query) 
           .Entities 
           .Select(item => item.ToEntity<SystemUser>()) 
           .ToList<SystemUser>(); 
+0

我認爲這是正確和最好的答案。 ToEntity ()是SDK內置的方法來完成轉換。 – airmanx86

+0

ToEntity ()實際上是在做一個淺拷貝。 – airmanx86