【问题标题】:How to add the IEnumerable collection to ICollection list?如何将 IEnumerable 集合添加到 ICollection 列表?
【发布时间】:2014-01-06 03:20:08
【问题描述】:

我将添加 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);

【问题讨论】:

  • 这段代码没有任何问题(除了一点参数验证)。告诉我们你是怎么称呼它的。
  • 最好使用AddRange(类似于List)和交换参数。

标签: c# linq ienumerable iqueryable icollection


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    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;
    }
    

    【讨论】:

      【解决方案3】:

      看看这段代码:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-15
        • 2020-12-07
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-12
        • 1970-01-01
        相关资源
        最近更新 更多