2013-12-18 2 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 правильно?

EDIT:

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; 
} 
Смежные вопросы