Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用lambda转换字典值_C#_Linq_Lambda - Fatal编程技术网

C# 使用lambda转换字典值

C# 使用lambda转换字典值,c#,linq,lambda,C#,Linq,Lambda,我这里有两个收藏: 充当缓存的字典 表示给定用户对每个现有工作流的权限的字典 这里的问题是缓存具有完整版本的特权(以及id、友好描述、文本解释等),我需要将字典转换为字典 是否可以使用单个lambda执行此操作?取决于您是否具有将单个枚举值转换为相应对象(例如工厂)的逻辑 为了转换一个字典,您可以使用ToDictionary()方法,该方法接受KeyValuePair两次,因此您可以第一次将其用于键,第二次用于值 假设我们有 Dictionary<string, List<st

我这里有两个收藏:

  • 充当缓存的
    字典
  • 表示给定用户对每个现有工作流的权限的
    字典
这里的问题是缓存具有完整版本的特权(以及id、友好描述、文本解释等),我需要将
字典
转换为
字典


是否可以使用单个lambda执行此操作?

取决于您是否具有将单个枚举值转换为相应对象(例如工厂)的逻辑

为了转换一个
字典
,您可以使用
ToDictionary()
方法,该方法接受
KeyValuePair
两次,因此您可以第一次将其用于键,第二次用于值

假设我们有

 Dictionary<string, List<string>> a = new Dictionary<string, List<string>>();
同样,通过映射(
选择
)每个枚举值并对其执行工厂,您应该能够将枚举转换为对象

Dictionary<Workflow, List<Privilege>> b 
    = a.ToDictionary(
        kvp => kvp.Key, 
        kvp => kvp.Value.Select(PrivilegeFactory.Create).ToList()
    );
Dictionary<Workflow, List<Privilege>> b 
    = a.ToDictionary(
        kvp => kvp.Key, 
        kvp => kvp.Value.Select(PrivilegeFactory.Create).ToList()
    );
Dictionary<Workflow, List<Privilege>> b 
    = a.ToDictionary(
        kvp => kvp.Key, 
        kvp => kvp.Value.Select(t => cacheDictionary[(int)t])
    );