2013-12-18 43 views
0

我添加了將Ienumerable集合添加到Icollection的方法。如何將IEnumerable集合添加到ICollection列表中?

public static ICollection<T> AddTo<T>(this IEnumerable<T> list,ICollection<T> collection) { 
    foreach (T item in list) { 
     collection.Add(item); 
    } 
    return collection; 
} 

但在第一次初始化集合變量作爲null.Then我收到「對象未找到錯誤」請告訴我如何的IEnumerable列表數據正確添加到ICollection的?

編輯:

ICollection<UserInApplication> userInAppRole=null; 
       IEnumerable<UserInApplication> result=null; 
    result = _userService.UserInApplicationRoles(iAppRoleId, collection["displayName"]).AsEnumerable(); 
    userInAppRole = Extensions.AddTo<UserInApplicationRole>(result,userInAppRole); 
+0

這段代碼沒有問題(除了一點參數驗證)。告訴我們你是怎麼稱呼它的。 –

+1

更好地使用'AddRange'(類似於List <>)和交換參數。 – AgentFire

回答

1

您未初始化您的收藏。可以用更好的方式調用擴展方法。

ICollection<UserInApplication> userInAppRole=new Collection<UserInApplication>(); //Initialize this 
IEnumerable<UserInApplication> result=null; 
result = _userService.UserInApplicationRoles(iAppRoleId,collection["displayName"]) 
        .AsEnumerable(); 
userInAppRole = result.AddTo(userInAppRole); 
+0

是通過使用上面的代碼我能夠得到正確的結果。 – user3106578

1

看看這段代碼:

ICollection<UserInApplication> userInAppRole=null; 
IEnumerable<UserInApplication> result=null; 
result = _userService.UserInApplicationRoles(iAppRoleId, collection["displayName"]).AsEnumerable(); 
userInAppRole = Extensions.AddTo<UserInApplicationRole>(result,userInAppRole) 

你永遠實例化一個集合中的userInAppRole變量;它是空的。當您嘗試將result添加到空值時,您會得到一個異常。

1
public static ICollection<T> AddTo<T>(this IEnumerable<T> list,ICollection<T> collection) { 
    if ((null != list) || (null != collection)) {  
    foreach (T item in list) { 
     collection.Add(item); 
    } 
    } 
    return collection; 
} 
相關問題