im a newbie at C# and would like input from more experienced programmers please. I have the following static class that enumerates directories in a folder, then searches each file in the folder (it seems to only work with text files even thought i dont explicitly specify that) for a given string and returns an IEnumerable that holds the results.
It takes about 15 seconds to go through 40 text files that are about 250kb in size and i think it could be faster. Perhaps i could use a better algorithm or is there a better method of achieving this?
All help is appreciated. Thanks
public static class LogFileReader
{
public static IEnumerable<string> GetLines(string path, string searchterm)
{
var dirs = Directory.EnumerateDirectories(path);
List<string> thelines = new List<string>();
foreach (var dir in dirs)
{
var files = Directory.EnumerateFiles(dir);
foreach (var file in files)
{
using (StreamReader sr = new StreamReader(file))
{
string line = string.Empty;
while ((line = sr.ReadLine()) != null)
{
if (line.IndexOf(searchterm, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
thelines.Add(line);
}
}
}
}
}
return thelines;
}
}