2010年9月25日土曜日

2つの配列から「値のペア」を列挙する、について

このエントリーをはてなブックマークに追加
メモ、on Mono 2.6.7


なるほど、こんな方法もあったか。

ということで、オレの拡張メソッドコレクションに追加させて頂く。
using System;
using System.Collections.Generic;
using System.Linq;

namespace Example
{
  public static class Ext
  {
    public static Dictionary<K, V> ToDicWith<K, V>(this K[] key, V[] val)
    {
      if (key.Length != val.Length)
      {
        throw new ArgumentException("Length of both arguments must be the same.");
      }

      var dic = new Dictionary<K, V>();

      key.Select( (k, i) =>
        new { Key = k, Value = val[i] } )
        .ToList()
        .ForEach( d => dic.Add(d.Key, d.Value) );

      return dic;
    }
  }

  public class Program
  {
    public static void Main(string[] args)
    {
      char[] num = "123456789".ToCharArray();
      char[] alp = "abcdefghi".ToCharArray();

      var dic = num.ToDicWith(alp);

      foreach (var d in dic)
      {
        Console.WriteLine(d);
      }
    }
  }
}
/*
 * Build:
 *
 *   gmcs array2dic.cs
 *
 * Run:
 *
 *   mono array2dic.exe
 *
 */
$ mono array2dic.exe
[1, a]
[2, b]
[3, c]
[4, d]
[5, e]
[6, f]
[7, g]
[8, h]
[9, i]

1 件のコメント:

sta さんのコメント...

Before:
public static Dictionary<T1, T2> ToDicWith<T1, T2>(this T1[] key, T2[] val)

After:
public static Dictionary<K, V> ToDicWith<K, V>(this K[] key, V[] val)

に伴う修正を行いました。

コメントを投稿