如何调用此linq查询?

时间:2014-02-26 14:14:25

标签: linq c#-4.0 delegates

假设我有一个返回字典的方法如下:

private Dictionary<string, int> GetWorktypeDictionaryList()
    {
        return new Dictionary<string, int>()
                   {
                       {"Select",-1},{"New MSC",1},{"Expansion",2},{"Migration",3},{"Upgrade",4},{"Relocation",5},{"Feature",6}

                   };
    }

现在在main方法中我想用小写字母值添加字典键。为了这些目的,我使用Action委托。代码如下:

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

            Action<KeyValuePair<string, int>> action =
                act => dict.Add(act.Key.ToLower(), act.Value);

            foreach (KeyValuePair<string,int> pair in GetWorktypeDictionaryList())
            {
                action(new KeyValuePair<string, int>(pair.Key,pair.Value));
            }

但我想在下面的两行中实现这三行代码。

Dictionary<string,int> dict = new Dictionary<string, int>();
GetWorktypeDictionaryList().ToList().ForEach(act => dict.Add(act.Key.ToLower(), act.Value));//Here is the problem how to invoke Action.

但我无法在这些场景中调用Action。请一些高级程序员朋友帮助我这样做。

1 个答案:

答案 0 :(得分:1)

您可以使用ToDictionary()

dict = GetWorktypeDictionaryList()
           .ToDictionary(kvp => kvp.Key.ToLower(), kvp => kvp.Value);

我不确定当您在第二个示例中嵌入Action时,{{1}}是如何进行播放的。

相关问题