Firstly, understand you're wearing two shirts. Even if it's a 'dress' shirt, it's supposed to be the actual shirt you're wearing. So if it's a question of warmth, or sweat stains, etc then it's sort of a workaround bandaid instead of solution. Shirts are made to be worn and then washed. Which is not to say I don't wear an undershirt myself sometimes but I recognize it's a little weird since it's like wearing two t-shirts. If you're cold, wear a vest, a sweater, or a sportscoat, etc. If you have armpit stains or sweat, then wear antiperspirant or cover up with a sweater, jacket, etc.
Secondly, please, for all that is good in this world, if you're wearing an undershirt, it's essentially underwear, so no crew/round neck shirts showing under your undone shirt collar spread. either wear a v-neck or something lower cut in a white or grey color, and if it's obviously seen because the shirt fabric is thin then go without the undershirt. Showing a visible white ruffled white crew neck t-shirt with white sleeves showing through the arm area is just a chump move.