【问题标题】:Combine two list objects to form a List<string>将两个列表对象组合成一个 List<string>
【发布时间】:2015-05-03 19:36:24
【问题描述】:

我有一个包含多个字段和两个对象的列表,我的要求是用'/'分隔的对象形成一个List&lt;string&gt;

例如:列表包含

  • 对象 1:

    • object1[0] = 测试
    • object1[1] = test2
  • 对象 2:

    • object2[0] = 名称
    • object2[1] = 名称 2;

我应该得到格式为 test/name, test2/name2 的字符串;


确切代码:

我正在尝试使用 List 中的值注入器注入模型

 var resultList = vReturn.ToList();
        List<UserSearchedModel> models = new List<UserSearchedModel>();
        resultList.ForEach(u =>
            {
                UserSearchedModel model = new UserSearchedModel();
                model.InjectFrom(u);
                model.Roles = string.Join(",", ObjectHelper.GetPropertyValue<IList<string>>(u, "Roles", null));
                models.Add(model);
            });

        return models;

我的列表包含两个我想插入到视图模型中的对象,以 Role/GroupCode 格式分隔。 Role1/GroupCode1、Role2/GroupCode2

【问题讨论】:

  • 您的objects 将包含相同数量的数据?换句话说,这是真的吗 - object1.Length == object2.Length
  • 这类问题暗示你的领域模型有问题。考虑是否应该定义一个新类,将“test,test2”作为一个属性,将“name,name2”作为第二个属性。
  • 是的,它们的长度相同...

标签: c# asp.net-mvc linq list


【解决方案1】:

没有a good, minimal, complete code example,就不可能提供肯定满足您需求的解决方案。但如果我理解正确,您有办法获得两个单独的集合,并且您希望将这些集合合并到一个 List&lt;string&gt; 对象中。

在这种理解中,这两个对象最初包含在它们自己的列表中这一事实似乎无关紧要,因此我将忽略这方面。

假设我理解正确,您可能想使用Enumerable.Zip() 方法。例如:

List<string> Merge(IEnumerable<string> source1, IEnumerable<string> source2)
{
    return source1.Zip(source2, (s1, s2) => s1 + "/" + s2).ToList();
}

这样使用:

List<string> mergedList = Merge(object1, object2);

【讨论】:

  • 抱歉,我不太了解 ASP.NET 或 MVC 框架,因此您添加的代码可以帮助我详细说明我的答案。如果您可以解释您在代码中添加object1object2 列表的来源以及您希望如何使用生成的字符串,我可以尝试详细说明我的答案以解释它如何适合该特定代码示例.
猜你喜欢
  • 2017-04-12
  • 2014-04-26
  • 2022-01-04
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多