Вы можете сделать это с помощью регулярных выражений .NET, хотя я бы посоветовал против этого:
string s = "ABCD";
bool result = Regex.IsMatch(s, @"^(?:([A-Z])(?!.*\1))*$");
Вместо этого я бы посоветовал проверить, что длина строки совпадает с количеством различных символов, и отдельно проверить требование A-Z:
bool result = s.Cast<char>().Distinct().Count() == s.Length;
В качестве альтернативы, если производительность является критической проблемой, перебирайте символы один за другим и сохраняйте запись, которую вы видели.