填充字典的简便方法<string,list <string>&gt; </string,list <string>

时间:2011-02-16 15:21:48

标签: c# linq

问候大师,我的目标是创建一个列表字典,是否存在一种更简单的技术?

我更喜欢List(t)到IEnumerable(t),这就是我选择Ilookup或IGrouping列表的原因。

代码可以工作,但它似乎是一种混乱的做事方式。

string[] files = Directory.GetFiles (@"C:\test");

Dictionary<string,List<string>> DataX = new Dictionary<string,List<string>>();

foreach (var group in files.GroupBy (file => Path.GetExtension (file)))
{
   DataX.Add (group.Key, group.ToList());
}

1 个答案:

答案 0 :(得分:12)

要在LINQ中完成所有操作,您可以使用ToDictionary()

string[] files = Directory.GetFiles (@"C:\test");
var DataX = files.GroupBy (file => Path.GetExtension (file))
                 .ToDictionary(g => g.Key, g => g.ToList());

或如克劳斯指出的那样,你可以一次性完成这一切:

var DataX = Directory.GetFiles (@"C:\test")
                 .GroupBy (file => Path.GetExtension (file))
                 .ToDictionary(g => g.Key, g => g.ToList());