如何将var转换为字典并使用foreach循环访问var

时间:2013-09-21 06:43:02

标签: linq c#-4.0 generics var generic-collections

我的字典定义如下:

Dictionary<string, int> Controls = new Dictionary<string, int>();

使用以下代码我将具有相似值的键放入var

var result = (from p in Controls
                         group p by p.Value into g
                         where g.Count() > 1
                         select g);

但我既不能将'结果'再次转换为字典,也不能访问'结果'中的项目

我试过这段代码但是

foreach (System.Linq.Lookup<int, KeyValuePair<string, int>> Item in result)
{

}

Plz帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

var dict = result.ToDictionary(x => x.Key, x => x.Select(y => y.Key).ToList())

并像

一样访问它
foreach(var item in dict)
顺便说一下,没有类型var。编译器确定变量的类型只是instruction,但它是强类型的。在你的情况下,我认为,它将是IEnumerable<IGrouping<TKey, TSource>>。实际上你也可以像这样访问result

foreach(var item in result)
{
    // item is type  Lookup<int, KeyValuePair<string, int>>.Grouping
    //  you can go through item like
    foreach(var i in item)
    {

    }

    // or convert it ToList()
    var l = item.ToList()
    // l is type List<KeyValuePair<string, int>>
}
相关问题