End Google Ads 201810 - BS.net 01 --> Hi Guys. I have a file with two sequences, Sequence A and a Sequence B. Sequence A only appears once in the file and Sequence B can appear once or multiple times in the file. See Sample data below:

1:F01CODENNNNXXX1234897878}{2:O1011702100608COMCODEXXXXX81287520281006081802N}{4:
:20:TESTINGFILE01
:28D:1/1
:50H:/12345678901
TEST NAME
ADDRESS1
ADDRESS2
ADDRESS3
:30:101022:21:REFERENCE1
:23E:OTHR/DMST
:32B:ZAR5005,00:57A:CODEXXXX
:59:/12345600002345678
TEST NAME2
ADDRESS1
ADDRESS2
ADDRESS3
:21:REFERENCE2
:23E:OTHR/DMST
:32B:ZAR7005,00:57A:CODEAAAA
:59:/12345657002345678
TEST NAME3
ADDRESS1
ADDRESS2
ADDRESS3
:71A:OUR
-}The portion in Bold is Sequence A and the remainder is sequence B data.

As you can see by the "TAGS" the fields starting with ':', that there are multiple Sequence B data. I need a way to pick up the data for the multiple Sequence B records. Sequence B start with :21: and ends with :59: followed by the address details. I tried a straight forward StreamReader and then populating the data but my Steamreader always goes from top to bottom in my while loop. Sample below.
string inFile;
inFile = textBox1.Text;
StreamReader sr = new StreamReader(inFile);
string holdline;
int lineCount = 0;
int clientname = 0;
int creditname = 0;
while (!sr.EndOfStream)
{
holdline = sr.ReadLine();

if (holdline.Length > 4)
{
string tag = holdline.Substring(0, 4);
string tag2 = holdline.Substring(0, 5);
if (tag == "{1:F")
{
lblBIC1.Text = holdline.Substring(6, 8).Trim();
lblClientBIC.Text = holdline.Substring(46, 8).Trim();
lblMsgType.Text = "MT" + holdline.Substring(33, 3).Trim();
lblDate.Text = holdline.Substring(36, 10).Trim();
lblSWIFTRef.Text = holdline.Substring(58, 10).Trim();
}

if (tag == ":20:")
{
int results = holdline.Length - 4;
lblA20.Text = holdline.Substring(4, results).Trim();
}

else if (tag2 == ":21R:")
{
int r1 = holdline.Length - 5;
lblA20.Text = holdline.Substring(4, r1).Trim();
lblA20.*******();
}
else if (tag2 == ":50H:")
{
int r3 = holdline.Length - 6;
lblA50H.Text = holdline.Substring(6, r3).Trim();
lblA50H.*******();
clientname = lineCount;
}
If I do things like this I end up overwriting the first Sequence B data with the second sequence B data. How can I capture both Sequence B data? Should I make use of "switch and case" statements instead?

Any advice would be greatly apreciated.
Excellence is doing ordinary things extraordinarily well.