No deja de ser sorprendente que no hay un método de decimal en C# para truncar decimales. He visto por ahí formas de hacerlo con formatos y al final he optado por multiplicar por 10^decimales, truncar quitando los decimales y volver a dividir entre 10^decimales. Lo necesitaba para poder truncar a 2 decimales, pero me he hecho un método genérico.
private static decimal Truncate(decimal pImporte, int pNumDecimales)
{
decimal wRt = 0;
decimal wPot10 = 1;
//for (int i = 1; i <= pNumDecimales; i++)
//{
// wPot10 = wPot10 * 10;
//}
wRt = pImporte * wPot10;
wRt = decimal.Truncate(wRt);
wRt = wRt / wPot10;
//wRt = decimal.Round(wRt, 2);
return wRt;
}