linq - 在 LINQ 中将 Dictionary<string, List<object>> 转换为 List<Dictionary<string, object>

标签 linq list dictionary

如何转换 Dictionary<string, List<object>>List<Dictionary<string, object>在LINQ?我正在使用 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);

非常感谢,
坎里奇

最佳答案

这应该有效:

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();

demo on ideone .

关于linq - 在 LINQ 中将 Dictionary<string, List<object>> 转换为 List<Dictionary<string, object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16108841/

相关文章:

sql - StartsWith() 在 LINQ 中不会转换为 Like ('abc%' )

arrays - 访问矩阵中的值(Haskell 新手)

loops - 迭代 clojure 映射对(循环)

python - 列为类属性

c# - 将列表拆分为字母范围

python - 用另一个字典初始化一个Python字典

swift - NSDictionary 在检索信息时返回一个可选的整数

c# - 基于一个列表对多个列表进行排序 C#

c# - 当列表中有列表时如何使用linq仅选择Id

c# - 为什么 .ForEach() 在 IList<T> 而不是 IEnumerable<T> 上?