Csharp/C#教程:C#Linq或Lambda从类中获取Dictionary <string,List >分享


C#Linq或Lambda从类中获取Dictionary <string,List >

我似乎找不到我要找的答案。 希望这里有人可以提供帮助。

我有一个包含某些进程的设置信息的类。 每个类都有一个processId,taskId和我当前逻辑不需要的各种其他信息。

public class ProcessSetting { public int ProcessId { get; set; } public int TaskId { get; set; } // Other properties not needed } 

可以存在多个ProcessSettings。 我将数据拉入List。 可以将processId与多个TaskId相关联。 例如:

 ProcessId: 1, TaskId: 1 ProcessId: 1, TaskId: 1 ProcessId: 1, TaskId: 2 ProcessId: 1, TaskId: 3 ProcessId: 2, TaskId: 3 ProcessId: 2, TaskId: 4 ProcessId: 3, TaskId: 1 

我最初使用linq只是从现有的枚举中收集我需要的值:(在末尾使用distinct以避免拉入ProcessId 1和TaskId 1的多个记录集)

 var baseSettings = (from setting in processSettings select new { ProcessStr = ((ProcessEnum)setting.ProcessId).ToString(), TaskStr = ((TaskEnum)setting.TaskId).ToString() }).Distinct(); 

这现在给我一个只包含processId和taskId的列表。 我发现这里的一些逻辑引导我朝着正确的方向前进,但这并不是我所需要的。 这是什么:

 Dictionary<string, List = baseSettings.GroupBy(x => x.ProcessStr).ToDictionary(x => x.Key, x => x.ToList()); 

但是,这是不正确的。 我收到一个错误:

“无法将源类型System.Collections.Generic.Dictionary>为目标类型System.Collections.Generic.Dictionary<string,System.Collections.Generic.List>

我不想要值为{ProcessStr,TaskStr}的Key。 谁能指出我正确的方向?

而不是x.ToList你必须首先选择匿名类型的字符串属性:

上述就是C#学习教程:C#Linq或Lambda从类中获取Dictionary <string,List >分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 Dictionary> procTasks = baseSettings .GroupBy(x => x.ProcessStr) .ToDictionary(g => g.Key, g => g.Select(x => x.TaskStr).ToList()); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/962003.html

(0)
上一篇 2021年11月26日
下一篇 2021年11月26日

精彩推荐