You can use Linq:
List<string> myList = new List<string>(){@"12|string|string2|username_one|string3|somenumbers123456789012",
@"123|string1|string2|username_two|string3|somenumbers34566789901234",
@"1245|string1|string2|username_three|string3|somenumbers123456788900"};
var qry = myList.Select(a=>a.Split('|')).Select(a=>Tuple.Create(a[0], a[1], a[2], a[3], a[4], a[5]));
foreach(var row in qry)
{
Console.WriteLine("{0} {1} {2} {3} {4} {5}", row.Item1, row.Item2, row.Item3, row.Item4, row.Item5, row.Item6 );
}
Result:
12 string string2 username_one string3 somenumbers123456789012
123 string1 string2 username_two string3 somenumbers34566789901234
1245 string1 string2 username_three string3 somenumbers123456788900
So, if you would like to get only user names, use:
var qry = myList.Select(a=>a.Split('|')[3]);