使用C#中其他数组的内容创建新数组

本文关键字:数组 新数组 创建 其他 使用 | 更新日期: 2023-09-27 18:23:54

我想知道从其他数组的内容创建新数组的最有效方法。

我有几种类型的字符串数组:

public readonly string[] Taiwan = { "TW", "TWO" };
public readonly string[] Vietnam = { "HM", "HN", "HNO" };
public readonly string[] Korea = { "KQ", "KS" };
public readonly string[] China = { "SS", "SZ" };
public readonly string[] Japan = { "T", "OS", "NG", "FU", "SP", "Q", "OJ", "JNX", "IXJ", "KAB", "JA", "JPx" };

现在可以用类似的方式创建一个新的字符串数组吗?

public readonly string[] ASIA = { Taiwan, Vietnam, Korea, China, Japan};

它将包含其他数组中包含的所有字符串。

使用C#中其他数组的内容创建新数组

string[] ASIA = new []{ Taiwan, Vietnam, Korea, China, Japan}
                      .SelectMany(s => s)  // not entirely sure what these abbreviations are...
                      .ToArray();

您可以尝试生成一个数组数组,然后使用SelectMany将其压平为字符串数组。

public readonly string[] ASIA = new[] { Taiwan, Vietnam, Korea, China, Japan}
    .SelectMany(countryCode => countryCode )
    .ToArray();

您可以连接两个数组。

string[] newArray = arrA.Concat(arrB).ToArray();

我还认为,在您的情况下,您可能需要考虑不同类型的数据结构。我认为字典可能很合适。

Dictionary<string, string[]> Asia = new Dictionary<string, string[]>();

Key可以是Country,值可以是该国家/地区的数组。

如果只想在字符串数组中使用唯一值,也可以使用聚合和并集来实现这一点

ASIA =  ( (new IEnumerable<string>[ ] { 
                Taiwan , Vietnam , Korea , China , Japan 
        } )
            .Aggregate ( ( a , b ) => a.Union ( b ) )
            .ToArray();

您可能想要创建一个锯齿状数组,如下所示:

string[][] ASIA = new string[][] { Taiwan, Vietnam, Korea, China, Japan };