【问题标题】:C# merge multiple arrays to one arrayC#将多个数组合并为一个数组
【发布时间】:2017-01-11 11:27:45
【问题描述】:

我从jagged array 中得到 x-Amount of Arrays,如下所示:

string[] sArray1 = {"FB1" , "FB(1)" , "V1.0"};
string[] sArray2 = {"FB1" , "FB(1)" , "" , "V1.0"};
string[] sArray3 = {"FB2" , "FB(2)" , "V5.2"}

我想将它们合并为一个Array

sArray1[0] == sArray2[0] && sArray1[1] == sArray2[1]

合并后的Array 应如下所示

string[] sArray12 = {"FB1" , "FB(1)" , "V1.0" , "V1.0"};

我已经用Array.CopyTo()试过了;和Enumerable.Union<>Enumerable.Union<> 的问题在于,当字段 3 和 4 具有相同的值时,只有字段 3 会被写入 Array。 有没有办法让两个值都被写入?还是有更好的方法来解决我的问题?

【问题讨论】:

  • "V2.0" 不在第一个或第二个数组中。它来自哪里?
  • 编辑了,应该是“V1.0”
  • 您希望“V1.0”都出现,但又不想“FB1”出现两次?
  • 你写了条件sArray[0] == sArray2[0],但是sArray在哪里?

标签: c# arrays linq merge jagged-arrays


【解决方案1】:

可能是这样的

if (sArray1[0] == sArray2[0] && sArray1[1] == sArray2[1])
{
   var sArray12 = sArray1.Concat(sArray2.Skip(2))
                         .Where(x => !string.IsNullOrEmpty(x)) //probably
                         .ToArray();
}

【讨论】:

  • 更像sArray1.Concat(sArray2.Skip(3)).ToArray
  • @Slai 我猜那会是Skip(2),但是,是的,解决了这个问题
  • 但是如何连接多个数组呢?有比多次调用 concat 更简单的方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 2020-08-21
  • 2015-09-28
相关资源
最近更新 更多