Linq 到嵌套列表
Posted
技术标签:
【中文标题】Linq 到嵌套列表【英文标题】:Linq to Nested Lists 【发布时间】:2020-12-23 16:57:47 【问题描述】:在 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
【问题讨论】:
定义“子组件”。 请为您的String text
发布示例输入值。
当你有 3 层嵌套列表时,你可能做错了什么。
【参考方案1】:
您可以使用以下 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
参数。
【讨论】:
以上是关于Linq 到嵌套列表的主要内容,如果未能解决你的问题,请参考以下文章
CSharp使用另一个列表及其嵌套列表过滤带有LINQ查询的列表