如何将键值对从控制台应用程序传递到字典

dqm*_*dqm 4 c# linq

我想从我的应用程序中传递一些参数,如下所示:

app.exe mode=1 thread=single
Run Code Online (Sandbox Code Playgroud)

我想将它们转换为键值对的字典.有任何一线建议吗?

Ben*_*thy 7

这是非常基本的,不考虑错误条件:

var dictionary = args.Select(a => a.Split('='))
                     .ToDictionary(a => a[0], a => a.Length == 2 ? a[1] : null);
Run Code Online (Sandbox Code Playgroud)

一些潜在的错误是:

  • 名称重复
  • 超过一个 =

处理这些使它有点丑陋:

var dictionary = args.Select(a => a.Split(new [] {'='}, 2))
                     .GroupBy(a => a[0], a => a.Length == 2 ? a[1] : null)
                     .ToDictionary(g => g.Key, g => g.FirstOrDefault());
Run Code Online (Sandbox Code Playgroud)

  • 你确实要求一个单行的建议. (2认同)