c# - 基于下一个元素值的 LINQ 条件聚合

标签 c# linq linq-to-objects

这个伪代码的 LINQ 等效项是什么:“给定一个字符串列表,对于每个不包含制表符的字符串,将它(使用竖线分隔符)连接到前一个字符串的末尾,并且返回结果序列”?

更多信息:

我有一个 List<string>表示制表符分隔的文本文件中的行。每行的最后一个字段始终是一个多行文本字段,并且该文件是由一个错误的系统生成的,该系统错误地处理了带有嵌入换行符的字段。所以我最终得到了这样一个列表:

1235 \t This is Record 1
7897 \t This is Record 2
8977 \t This is Record 3
continued on the next line
and still continued more
8375 \t This is Record 4

我想通过将所有孤立行(没有制表符的行)连接到上一行的末尾来合并此列表。像这样:

1235 \t This is Record 1
7897 \t This is Record 2
8977 \t This is Record 3|continued on the next line|and still continued more
8375 \t This is Record 4

for() 解决这个问题loop 会很容易,但我正在努力提高我的 LINQ 技能,我想知道是否有一个相当有效的 LINQ 解决方案来解决这个问题。有吗?

最佳答案

这不是应该用 LINQ 解决的问题。 LINQ 专为枚举而设计,而这最好通过迭代来解决。

正确枚举序列意味着没有项目知道其他项目,这显然不适用于您的情况。使用 for 循环,这样您就可以干净利落地按顺序一个接一个地遍历字符串。

关于c# - 基于下一个元素值的 LINQ 条件聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9935150/

相关文章:

c# - 如何在 linq 中多次调用 .Where() 方法来表现得像 OR (||)

c# - 如何让 CLR 知道从 GAC 选择哪个程序集?

c# - 返回从同一个抽象类派生的两个类型

c# - ExpressionVisitor 没有调用它的 VisitMethodCall

C#、objectCollection.OfType<T>() 和 foreach(objectCollection 中的 T 项)、IEnumerable 到 IEnumerable<T>

.net - 为什么 SequenceEqual 采用 IEqualityComparer 而不是谓词?

c# - 当 AnyCPU 测试程序集实现来自 x64 生产程序集的接口(interface)时出现 BadImageFormatException

c# - 反序列化到 List<string> 字段时出现 "Unexpected character encountered while parsing value: [."异常

c# - 基于项目权重合并多个列表的高效方法

LINQ Group按匿名类型