4

LINQに変換Dictionary<string, List<object>>する方法は? List<Dictionary<string, object>for ループを使用して実行していますが、コンパクトな方法で実行する方法はありますか?

Dictionary<string, List<object>> mydata = new Dictionary<string, List<object>>();
List<object> ldate=new List<object>(){"1/1/2000","1,1/2001"};
List<object> lage=new List<object>(){"4","5"};

mydata["date"] = ldate;
mydata["age"] = lage;

List<Dictionary<string, object>> mytarget = new List<Dictionary<string, object>>();
Dictionary<string,object> t1=new Dictionary<string,object>();
Dictionary<string,object> t2=new Dictionary<string,object>();

t1["date"]="1/1/2000";
t1["age"]="4";

t2["date"]="1/1/2001";
t2["age"]="5";

mytarget.Add(t1);
mytarget.Add(t2);

どうもありがとう、カンリック

4

2 に答える 2

1

これはうまくいくはずです:

Dictionary<string,List<object>> orig = ...
var res = Enumerable.Range(0, orig.Values.First().Count)
    .Select(
        i => orig.Aggregate(
            new Dictionary<string,object>()
        ,   (d, p) => { d[p.Key] = p.Value[i]; return d; }
        )
    ).ToList();

ideoneのデモを参照してください。

于 2013-04-19T16:19:22.830 に答える
0

集約のトリッキーな使用法を使用しない、より単純な代替手段を提供します。

var target = Enumerable.Range(0, source.Values.First().Count)
                   .Select(i => source.ToDictionary(x => x.Key, x => x.Value[i]))
                   .ToList();
于 2013-04-19T17:26:45.587 に答える