7

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

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

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};

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

4

5 回答 5

10
string[] ASIA = new []{ Taiwan, Vietnam, Korea, China, Japan}
                      .SelectMany(s => s)  // not entirely sure what these abbreviations are...
                      .ToArray();
于 2013-07-19T19:08:55.000 回答
8

您可以尝试生成数组数组,然后将其展平SelectMany为字符串数组。

public readonly string[] ASIA = new[] { Taiwan, Vietnam, Korea, China, Japan}
    .SelectMany(countryCode => countryCode )
    .ToArray();
于 2013-07-19T19:09:31.177 回答
6

你可以连接两个数组。

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

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

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

键可以是国家,值可以是该国家的数组。

于 2013-07-19T19:07:16.663 回答
0

如果您只想要字符串数组中的唯一值,您也可以使用聚合和联合来完成此操作

ASIA =  ( (new IEnumerable<string>[ ] { 
                Taiwan , Vietnam , Korea , China , Japan 
        } )
            .Aggregate ( ( a , b ) => a.Union ( b ) )
            .ToArray();
于 2013-07-19T19:47:51.307 回答
0

您可能想要创建一个像这样的锯齿状数组

string[][] ASIA = new string[][] { Taiwan, Vietnam, Korea, China, Japan };
于 2013-07-19T19:57:22.467 回答