C# search all files in a directory that contain a string, then return that string

You seem quite lost. Why are you using a dynamic when a string is all that you need? Your code has too many unnecessary variables and convertions. Here's a much simpler way to do it. I don't know what you want the label to have if there are many matching lines, here I'm only placing the first one there:

string dirScanner = @"\\mypath\";

if (string.IsNullOrWhiteSpace(txtSerialSearch.Text) || string.IsNullOrWhiteSpace(txtSID.Text))
    return;

string[] allFiles = Directory.GetFiles(dirScanner, "*.txt");

foreach (string file in allFiles)
{
    string[] lines = File.ReadAllLines(file);
    string firstOccurrence = lines.FirstOrDefault(l => l.Contains(txtSerialSearch.Text));
    if (firstOccurrence != null)
    {
        lblOutput.Text = firstOccurrence;
        break;
    }
}

I have implemented the same using Regular Expressions. You need to use namespace using System.Text.RegularExpressions;

 string strSerial = @"Microsoft";
            Regex match = new Regex(strSerial);
            string matchinglines = string.Empty;
            List<string> filenames = new List<string>(Directory.GetFiles(textBox1.Text));
            foreach(string filename in filenames)
            {
                //StreamReader strFile = new StreamReader(filename);
                string fileContent = File.ReadAllText(filename);
                if(match.IsMatch(fileContent))
                {
                    label1.Text = Regex.Match(fileContent, strSerial).ToString();
                    break;
                }
            }

Tags:

C#