c# - 使用 LINQ 将字符串拆分为元组?

标签 c# linq

给定一个类似 "name:Dave" 的字符串我想转换成 Tuple<string,string>有没有一种巧妙的方法可以使用 LINQ 内联执行此操作,而不是先获取数组然后再对其进行解析?

我正在从我的 app.config 中解析一些配置数据像这样的文件:

<Data>
  <add key="John" value="instrument:guitar"/>
  <add key="Paul" value="instrument:bass"/>
  <add key="George" value="instrument:guitar"/>
  <add key="Ringo" value="instrument:drums"/>
</Data>

我想将其转换为 Dictionary<string,tuple<string,string>> (我知道这是一个奇怪的数据结构!)

从一些代码开始:

            var x = ((ConfigurationManager.GetSection("Data") as Hashtable))
                .Cast<System.Collections.DictionaryEntry>()
                .ToDictionary(n => n.Key.ToString(), n => something(n.Value.ToString().Split(':')));

我想知道是否有一种简洁的 LINQ 方法来在线执行此操作,而不是编写一个实用函数来从 String.Split 的数组获取单个元组?

最佳答案

var source = new Dictionary<string, string>(){ { "John", "instrument:guitar" } };
var tuple = source.Select(x => new { key = x.Key, values = x.Value.Split(':') }).Select(y => new Tuple<string, string>(y.key, y.values[1])).ToList();

关于c# - 使用 LINQ 将字符串拆分为元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42138254/

相关文章:

c# - 有没有什么函数可以删除最后绘制的曲线?

c# - 如何使用 Linq 获取随机对象

c# - Linq 查询不返回值

linq - 使用 LINQ 从另一个表更新 DataTable

c# - 是否有 LINQ 等效方法?

c# - 具有透明背景且包含不透明控件的 WPF 窗口

c# - 在引擎盖下的阻塞任务中取消 token

java - 从java到c#的转换——协变和逆变

c# - LINQ 查询中单个表的多个计数

c# - 保活sql事务