1

我有以下List<string>

List<string> RFD = new List<string>(File.ReadAllLines("FDIASNC"));

它正在读取的文件有这个:

000821031300000000080
001921031300000000080
004221031300000000080
008121031300000000080
009321031300000000080
011221031300000000080
012221031300000000080
0128200313010000330790000033
207721031300000000080

所以我想要的是找到一个匹配并选择这一行,例如,如果我想读取“0128”的行,它将手动为 RFD[7],但我想搜索该行并输出该行进行操作。 .. 任何想法?

谢谢你。

编辑

我一发帖就找到了,我是个笨蛋呵呵……谢谢你的回答,10分钟后我会选择一个作为正确的:)

4

5 回答 5

2

您可以使用 LINQ 进行搜索:

var line = File.ReadAllLines("FDIASNC")
               .FirstOrDefault(line => line.StartWith("0128"));

if (line != null)
{
    //Do something with this line
}

你不需要创建一个List<string>因为ReadAllLines返回IEnumerable<string>

如果您的文件很大,您可能会考虑使用延迟执行,ReadLines而不是将所有行加载到内存中

于 2013-03-25T11:30:53.787 回答
1

尝试这个:

string line = RFD.FirstOrDefault(line => line.StartsWith("0128"));

如果开头没有 0128 行,则该行为空

于 2013-03-25T11:33:47.423 回答
1

像这样的东西?

using System.Linq;

// later in your program...

foreach (string match in RFD.Where(l => l.StartsWith("0128"))) {
    Console.WriteLine(match);
}
于 2013-03-25T11:31:13.900 回答
1
 RFD.Where(r=>r.Contains("0128")).FirstOrDefault()
于 2013-03-25T11:31:01.543 回答
1

如果您想准确选择符合您条件的一行,请使用FirstSingleLINQ 扩展方法。例如:

string str = RFD.First(line => line.StartWith("0128"));

返回0128200313010000330790000033字符串

于 2013-03-25T11:31:05.397 回答