If you need to count distinct characters then, for the reasons explained in Remarks section, you can't simply use Length
property because it's the length of the array of System.Char
which are not characters but code-units (not Unicode code-points nor graphemes). If, for example, you simply write text.Distinct().Count()
you will get incorrect results, correct code:
int distinctCharactersCount = text.EnumerateCharacters().Count();
One step further is to count occurrences of each character, if performance aren't an issue you may simply do it like this (in this example regardless of case):
var frequencies = text.EnumerateCharacters()
.GroupBy(x => x, StringComparer.CurrentCultureIgnoreCase)
.Select(x => new { Character = x.Key, Count = x.Count() };