Please try the following solution. I heavily commented it, so it should be clear how it works.
void Main()
{
string SourceFileName = "FL_FILEM_01_20200909";
//SourceFileName = "FL_NamePart1_NamePart2_NamePart3_20200909";
string filename = SourceFileName.Substring(SourceFileName.IndexOf("_") + 1);
string FinalFilename = filename.Substring(0, filename.LastIndexOf("_"));
// find last token
string LastToken = FinalFilename.Split('_').Last();
// check if last token is numeric
if (Int32.TryParse(LastToken, out int j))
{
// count all tokens
int counter = FinalFilename.Split('_').Count();
// assemble all back except last token
FinalFilename = string.Join("_", FinalFilename.Split('_').Take(counter-1));
}
Console.WriteLine(FinalFilename);
}