なるほど、こんな方法もあったか。
ということで、オレの拡張メソッドコレクションに追加させて頂く。
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 件のコメント:
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)
に伴う修正を行いました。
コメントを投稿