【问题标题】:convert an object list with list to a single list将带有列表的对象列表转换为单个列表
【发布时间】:2016-10-20 02:35:51
【问题描述】:

我有一个对象列表,包含以下对象:

Userobject{
    username
    userage
...
    userrolesList // is a List<userrole>
}

userrole{
    rolid
    rolname
    rolcommission
}

userrolesList 可以有一个或多个userroleobjects。

我需要将此列表发送到另一个系统,但另一个系统只接受对象列表,例如:

Userobject{
    username
    userage
...
    userroleobject // is a userrole object
}

userrole{
    rolid
    rolname
    rolcommission
}

在这种情况下,如果一个用户有 10 个角色,我需要将 10 个不同的对象发送到另一个系统。有什么建议我可以轻松做到这一点而不影响性能吗?

【问题讨论】:

  • 为什么不在发送后迭代所有 10 个角色以解析它们到 userroleobject。
  • 在 Userobject 中保留一个属性、Object 的类型并在 get 中将 userrolesList 作为单个对象返回并发送

标签: c# linq lambda listcollectionview


【解决方案1】:

使用 LINQ 查询语法非常简单:

var results = from user in userObjects
              from role in user.UserRolesList
              select new OtherSystemUserObject
              {
                  UserAge = user.UserAge,
                  UserName = user.UserName,
                  UserRole = role
                  // other mapping stuff...
              };

【讨论】:

    【解决方案2】:

    我的朋友,你试图做的事情不太合乎逻辑。但是,我想到的是:您可以使用需要发送的类模型创建一个类,然后通过 userrolelist 将每个元素转换为单个 userrole 对象进行迭代。像这样:

    for(int i = 0; i < userobject.userroleslist.Count ; i++)
    {
        var userrole = userobject.userroleslist[i];
        //  Map your object with this userrole variable
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-24
      • 2019-06-12
      • 2014-07-12
      • 2013-12-02
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多