Maybe this is one of these rare cases when reasoning by contradiction helps. Thus, assume without loss of generality that $L=0$ (otherwise, replace $f$ by $x\mapsto f(x)-Lx$) and that the conclusion is false. Thus, either $f'(a)$ does not exist or $f'(a)\ne 0$, in any case, there exists a sequence $(z_n)_n$ and some $\varepsilon\gt0$ such that $z_n\ne a$, $z_n\to a$, and $|f(z_n)-f(a)|\geqslant2\varepsilon|z_n-a|$ for every $n$.
Assume without loss of generality that $z_n\lt a$ infinitely often and define $(x_n)_n$ as the subsequence of $(z_n)_n$ made of the terms $\lt a$ hence $x_n\lt a$, $x_n\to a$, and $|f(x_n)-f(a)|\geqslant2\varepsilon(a-x_n)$.
Now, $f(x)\to f(a)$ when $x\to a$, $x\gt a$, hence, for each $n$, one can choose $y_n\gt a$ such that $|f(y_n)-f(a)|\leqslant\varepsilon(a-x_n)$ and $y_n-a\leqslant\varepsilon(a-x_n)$. In particular, $(1+\varepsilon)(a-x_n)\geqslant y_n-x_n$. One gets $ |f(y_n)-f(x_n)|\geqslant|f(x_n)-f(a)|-|f(y_n)-f(a)|\geqslant\varepsilon(a-x_n)\geqslant(\varepsilon/(1+\varepsilon))(y_n-x_n), $ for every $n$, and, in particular, $ \frac{f(x_n)-f(y_n)}{y_n-x_n}\not\to0. $