2013-12-18 4 views
0

Icollection에 Ienumerable 컬렉션을 추가하는 방법을 추가합니다. ICollection 목록에 IEnumerable 컬렉션을 추가하는 방법은 무엇입니까?

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으로 수집 변수 초기화 처음에

방법을 제대로은 ICollection에 IEnumerable을 목록 데이터를 추가하는 말씀 해주십시오?

편집 :

이 코드에서
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 변수 컬렉션을 인스턴스화하지하고; 그것은 null입니다. result을 null에 추가하려고하면 예외가 발생합니다.

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; 
}