Почему неправильно происходит сравнение?
Проблема в логике if'a. Если его сократить получается так:if (buf != str || buf != "1" || buf != "3")
Подставим 1:if ("1" != "1" || "1" != "1" || "1" != "2")
// считаем
if (false || false || true)
// итог
if (true)
В целом, этот if бесполезен, его функцию замечательно заменяет switch:switch (buf)
{
   case "1":
       Console.WriteLine("ОК");
       break;
   case "2":
       Console.WriteLine("ОК");
       break;
   default:
      Console.WriteLine("\nНе число или дробное число");
      break;
}

...new string(buf.Where(c => Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c)).ToArray())код для размышленияusing System;
using System.Linq;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("1 - Запись строки \n2 - Удаление строки");
            Console.Write("\nВыберите пункт: ");
            var buf = Console.ReadLine();
            var zzz = new string(buf.Where(c => Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c)).ToArray());
            Console.Write($"\n...! вот такую шнягу я сочинил {zzz}\n");
            Console.Write($"\n...! потом придумал такое условие {buf != zzz}\n");
            Console.Write($"\n...! общее условие {buf != zzz} || {buf != "1"} || {buf != "3"}\n");
            if (
                buf != zzz
                || buf != "1"
                || buf != "3")
            {
                Console.WriteLine("\nНе число или дробное число");
            }
            else
            {
                switch (buf)
                {
                    case "1":
                        Console.WriteLine("ОК");
                        break;
                    case "2":
                        Console.WriteLine("ОК");
                        break;
                }
            }
        }
    }
}ps подправлено.. и думаю так будет нагляднееpps  а еще есть другие способы проверять ввод, к примеру https://docs.microsoft.com/ru-ru/dotnet/api/system...upd код для размышления 2using System;
using System.Linq;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("1 - Запись строки \n2 - Удаление строки");
            Console.Write("\nВыберите пункт: ");
            var buf = Console.ReadLine();
            if (!int.TryParse(buf, out var n))
                Console.WriteLine("\nНе число или дробное число");
            else
                switch (n)
                {
                    case 1:
                        Console.WriteLine("ОК");
                        break;
                    case 2:
                        Console.WriteLine("ОК");
                        break;
                    default:
                        Console.WriteLine($"... опять что то не предвиденное! ((..."
                            + $" или просто число неожиданное? {n}");
                        break;
                }
        }
    }
}