Linq 到嵌套列表

Linq to Nested Lists

在 LINQ 查询方面需要一点帮助。我有一个由组件和子组件组成的字符串。我还有一个 LINQ 查询,它可以很好地将组件和子组件拆分为嵌套的通用列表。

List<List<string>> fields = (from a in text.Split(new char[] { '\r' })
                             select a.Split(new char[] { ',' }).ToList()).ToList();

我现在有一些子组件,它们有自己的子组件,由“-”分隔。我如何修改上面的代码以允许使用第三个分隔符的第三个嵌套列表。已经尝试了一些 LINQ 变体,但无法使其正常工作。我有非常基本的 LINQ 知识。提前致谢。

示例:

component1,component2,component3.1-component3.2-component3.3,component4
component1,component2,component3,component4.1-component4.2-component4.3,component5,component6.1-component6.2

您可以使用以下 Linq 查询来做到这一点

var fields = text.Split('\r')
    .Select(a => a.Split(',')
                  .Select(b => b.Split('-')
                                .ToList())
                  .ToList())
    .ToList();

或在查询语法中

var fields = (from a in text.Split('\r')
              select (from b in a.Split(',')
                      select b.Split('-').ToList())
                     .ToList())
            .ToList();

请注意,您不必为 Split 方法创建数组,因为它被定义为 params 参数。