IIRC .NET decides that on its own. I think some requirements for the JIT to perform inlining was max. 32bytes of IL code, no branching, and some other stuff I can't remember. Not sure about the branching though.
I've seen posts saying that you can get away with *one* if-then-else construct in a function and still have it inlined. It's probably something to check on a case-by-case basis though .