【问题标题】:merge two lists with same number of records based in index c#基于索引c#合并两个具有相同数量记录的列表
【发布时间】:2017-06-23 21:02:49
【问题描述】:

我有下面提到的两个类

public class NameDTO
{
    public string Name;
}

public class ValDTO
{
    public string Val;
}

对于名称,我正在获取如下图所示的列表 result for names list

我得到的值的结果如下图所示

result of values

我的两个列表都给出了 96 个值。我正在尝试根据索引位置合并两个结果,即我正在尝试将 listnames 的结果作为第一个值与 listvalues 的结果匹配。

account-Ind : A...等

我试过了

var objects = _nameDetials.Zip(_valDetials, (val, type) => Convert.ChangeType(val, type)); 

List<Object> allS = (from x in _nameDetials 
                     select (Object)new { 
                         someAnotherThing = x.Name, 
                         something = string.Empty }).ToList();

allS.AddRange((from x in _valDetials 
               select (Object)new { 
                   someAnotherThing = string.Empty, 
                   something = x.Val }).ToList());

我也尝试了很多示例,但无法得出我需要的输出。我认为可能有一种基于列表索引的简单方法,但我无法准确确定需要什么。

任何帮助将不胜感激。

【问题讨论】:

  • 你有 Lists 还是 IEnumerables

标签: c# .net list


【解决方案1】:

假设你有 IEnumerables:

        IEnumerable<NameDTO> _nameDetials = new List<NameDTO>() { new NameDTO() { Name = "A" }, new NameDTO { Name = "B" } };
        IEnumerable<ValDTO> _valDetials=new List<ValDTO>() { new ValDTO() { Val = "1" }, new ValDTO() { Val = "2" } };

        var combined = _nameDetials.Zip(_valDetials, (name, val) => new KeyValuePair<NameDTO, ValDTO>(name, val));

将返回一个 IEnumerable 的 KeyValue 对。如果需要,您可以替换为其他类型,但这应该可以帮助您了解如何使用 Zip

【讨论】:

  • Zip 的问题在于,您传入的 lambda 会传递 2 个参数,每个集合中 1 个。然后你决定你想如何组合。将其视为 2 个同时收集的选择
  • 您的代码在获得我的结果输出方面对我有用,但是您是否也可以帮助我将其转换为 json,因为我发现了很多带有 KeyValuePair 的示例用于转换为 json但找不到 KeyValuePair 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2016-09-04
相关资源
最近更新 更多