从List <string>中选择匹配</string>的行

时间:2013-03-25 11:27:51

标签: c# string list search

我有以下List<string>

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

正在阅读的文件包含:

000821031300000000080
001921031300000000080
004221031300000000080
008121031300000000080
009321031300000000080
011221031300000000080
012221031300000000080
0128200313010000330790000033
207721031300000000080

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

谢谢。

修改

我发现它一旦发布,我是一个愚蠢的嘿嘿...谢谢你的答案,在10分钟内我会选择一个正确的:))

5 个答案:

答案 0 :(得分: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的延迟执行,而不是将所有行加载到内存中

答案 1 :(得分:1)

 RFD.Where(r=>r.Contains("0128")).FirstOrDefault()

答案 2 :(得分:1)

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

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

返回0128200313010000330790000033字符串

答案 3 :(得分:1)

这样的东西?

using System.Linq;

// later in your program...

foreach (string match in RFD.Where(l => l.StartsWith("0128"))) {
    Console.WriteLine(match);
}

答案 4 :(得分:1)

试试这个:

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

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