繁体   English   中英

使用linq解析包含分层项的文本文件

[英]Parsing text file containing hierarchical items using linq

我正在重写一些代码,并尽一切可能尝试使用Linq。 我现在的问题是一个简单的文件导入功能。

该文件基本上如下所示:

A1
B1|1882
C1|7315808907578
B9
B1|1883
C1|4025595431639
C1|8717734091786
C1|8717734091809
C1|8717734098280
C1|8717795041874
C1|8717795060998
C1|8717795108973
B9
B1|1884
C1|4025595732071
C1|7315808887184
C1|8717734001983
B9
A9

现有代码如下所示:

line = reader.ReadLine();
string itemNo = "";
List<AltItems> list = new List<AltItems>();
while (line != null) {
    posts = line.Split(postSep);
    if (posts.Length == 0) { }
    else if (posts[0].Equals("A1")) { }
    else if (posts[0].Equals("B1"))
        itemNo = posts[1];
    else if (posts[0].Equals("C1")) {
        string altItemNo = posts[1];
        list.Add(new AltItems() { ItemNo = itemNo, AltItemNo = altItemNo });
    }
    line = reader.ReadLine();
}

等效的Linq查询是什么样的? 关于使用Linq重写此代码的性能损失有什么想法? 我还具有多个层次结构级别的文件,其中需要来自第一级项目的数据来构建第三级项目...

我会同意艾哈迈德·伊利亚斯。 用LINQ重写所有内容并不意味着它将更快地工作。

特别是,对于字符串解析,您应该知道LINQ不支持它。 如果您认为LINQ是一种以多种方式针对多种数据源的查询语言 ,则这是绝对合理的。 有很多方法可以做到,但是它们总是太间接了,我并不特别喜欢它们。 其中之一就是使用Scott Guthry的DynamicLinq库,这是它在此处建议的方式。

请注意,我仅向您展示一种使用LINQ进行字符串解析的方法。 这并不意味着我建议使用LINQ替换条件代码。

希望我能帮上忙!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM