【问题标题】:Combining two lists with different elements to one list with all elements and SAME index in c#在c#中将具有不同元素的两个列表组合成一个具有所有元素和相同索引的列表
【发布时间】:2017-08-18 03:53:24
【问题描述】:

我有两个不同的列表 geocode1geocode2 都有 5 行记录。 geocode1 有 4 列,即地址、城市、邮编和街道。 geocode2有纬度、经度、状态、县4列

使用 addrange 合并它们,如下所示:

 geocode1.Addrange(geocode2)

结果 geocode1 有 8 列(这是我想要的),但有 10 行,前五个包含第一个列表 (geocode1) 中的值,后五个包含第二个列表 (geocode2) 中的值。 (类似于 SQL 中的外连接)

我希望有 8 列但 5 行,其中两个列表的元素组合在一起,就像 SQL 中的内部连接一样。谁能给我一个解决方案?

【问题讨论】:

  • 我研究了答案,并使用了“addrange”或“cocat”,这并不能解决我的问题。
  • @YvetteColomb 哦.. 它可能有很多原因。我想知道对我的一些问题/答案投反对票的原因,但没有反对票的人愿意提及。我也想知道这里的原因,但你的链接澄清了它。抱歉,gutsy_guy 打乱了你的帖子,但它确实会对每个人都有帮助。
  • @YvetteColomb:当我使用 addrange 时,我使用调试器检查列表中的值(我没有显示它),有 8 行。前 5 行包含第一个列表中的值,但第二个列表中的元素为空。然后在最后 5 行中,仅显示第二个列表的元素(列)的值,第一个列表的列为空。有趣的是,低声誉用户提出的问题突然被认为缺乏研究。
  • @PM.: 没关系,因为我正在使用调试器检查值并且没有在任何地方显示列表,除非我单独写一篇文章,否则我无法“展示”我的研究要显示的代码。无论如何,感谢威利,我得到了答案,并且使用 ZIP 解决了我的问题。另一个事实是,这里的一些人真的很想立即对声誉低下的用户投反对票。 “偏见”是一种普遍的人性。

标签: c# c#-5.0


【解决方案1】:

为此你需要 zip:

var result = geocode1.Zip(geocode2, (c1, c2) => new ModelName
         {
           Address = c1.Address,
           City = c1.City,
           Zip = c1.Zip
           Street. c1.Street,
           Latitute = c2.Latitude
           Longitude = c2.Longitude,
           Status = c2.Status,
           Country = c2.Country
         }).ToList(); 

确保两个列表的长度相同,因为 Zip 将遵循最短的列表。

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多