Why not use a generic type with a common interface.
private static List<T> RemoveUnwantedRows<T>(List<T> lstData) where T: Igos
{
List<T> lstfoundEmpty = null;
lstfoundEmpty = lstData.FindAll(c =>
c.Rec1_Amount == "0" &&
c.Rec1_Amount == "0");
if (lstfoundEmpty.Count > 0)
{
foreach (T lstItem in lstfoundEmpty)
{
T foundGOS = lstData.FirstOrDefault(c =>
c.GOS_Seq == lstItem.GOS_Seq &&
c.Rec1_Amount != "0" &&
c.Rec1_Amount != "0");
if (foundGOS != null)
{
lstData.Remove(lstItem);
}
}
}
return lstData;
}