c#で、マルチバイトの途中で文字が切れないLeftB

public static string LeftB(string sData, int nLen)
{
    Encoding oSJisEncoding = Encoding.GetEncoding("Shift_JIS");
    byte[] nByteAry = oSJisEncoding.GetBytes(sData);

    if (nByteAry.Length <= nLen) {
        return sData;
    } else {
        string sLeftStr = oSJisEncoding.GetString(nByteAry, 0, nLen);
        int nLastPos = sLeftStr.Length - 1;
        if (0 < nLastPos && sData[nLastPos] != sLeftStr[nLastPos]) {
            sLeftStr = sLeftStr.Substring(0, nLastPos);
        }
        return sLeftStr;
    }
}