如何将IEnumerable集合添加到ICollection列表?

时间:2013-12-18 04:44:46

标签: c# linq ienumerable iqueryable 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。然后我收到“找不到对象引用错误”,请告诉我如何正确地将Ienumerable列表数据添加到Icollection中?

编辑:

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

3 个答案:

答案 0 :(得分:1)

看看这段代码:

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

你永远不会在userInAppRole变量中实例化一个集合;它是空的。当您尝试将result添加到null时,会出现异常。

答案 1 :(得分: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;
}

答案 2 :(得分:1)

您没有初始化您的收藏。并且可以更好地调用扩展方法。

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