2016-04-27 31 views
0

ヘルプファイルとそれに類する質問は徹底的に調べていますが、単純な解決策には至りませんでした。しかし、私はそうすべきだと思います。 私は2つのstring[]配列を持っているので、それらを1つの2D配列にマージする必要があります。Visual C#2つの1D文字列[]配列を1つの2D文字列[、]配列にマージする方法

public static string[,] GetStructure(string FilePath) 
    { 
     try 
     { 
      xliff = XDocument.Load(Path.GetFullPath(FilePath)); 
      XNamespace ns = "http://sdl.com/FileTypes/SdlXliff/1.0"; 
      string[] ids = xliff.Descendants().Elements(ns + "tag-defs").Elements(ns + "tag").Elements(ns + "st").Select(e => e.Parent.Attribute("id").Value).ToArray(); 
      string[] elements = xliff.Descendants().Elements(ns + "tag-defs").Elements(ns + "tag").Elements(ns + "st").Select(e => e.Value).ToArray(); 

      string[,] mergedarray = new string[ids.Length, 2]; 

      for (int i = 0; i < ids.Length; i++) 
      { 
       mergedarray[i, 0] = ids[i]; 
       mergedarray[i, 1] = elements[i]; 
      } 

      return mergedarray; 
     } 
     catch (Exception) 
     { 
      return null; 
     } 
    } 

この合併をより簡単にするために、任意の提案を:ここで

私が得たコードがありますか?

+0

があり、それは ''辞書<文字列、文字列> ''も ''文字列[、] ''配列、またはできなければならないのか? – ub3rst4r

+1

なぜあなたの方法はもっとシンプルにする必要があると思いますか?私にとっては、それはシンプルできれいに見え、わずか10行しかありません。 – Fka

答えて

1

Linqを使用できます。

var range = Enumerable.Range(0, ids.Length).ToList(); 
range.ForEach(i => { mergedarray[i, 0] = ids[i]; mergedarray[i, 1] = elements[i]; }); 

は多分、より良いのLINQ文の

+0

'ForEach'は' Enumerable.Range'のための有効なメソッドではありません。 – ib11

+1

範囲をリストに変換できます。 'var range = Enumerable.Range(0、ids.Length - 1).ToList(); range.ForEach(i => {mergedarray [i、0] = ids [i]; mergedarray [i、1] =要素[i];}); ' –

+0

素晴らしいです。編集を参照してください。ただし、 'Range'の上限はすべての要素を含めるには' ids.Length'でなければなりません。 – ib11

関連する問題