Причина, по которой вам нужно обратиться к списку, заключается в том, что выражение внутри Select не оценивается, пока не будет оценено выражение, созданное оператором LINQ. Поскольку вы используете его для добавления к sResult
, значение этой переменной не изменится до того, как вы поместите ее в буфер обмена, если вы не «запустите» выражение LINQ с помощью ToList (). Обратите внимание, что вывод ToList () в основном бесполезен.
Большая проблема в том, что вы неправильно используете Select. Вы действительно должны использовать string.Join вместо построения строки внутри предложения Select. Построение его внутри предложения Select будет неожиданным для людей, читающих ваш код, и труднее для понимания.
var sResult = string.Join( "",
sha.ComputeHash(
UTF8Encoding.Unicode.GetBytes(tbxWordToEncrypt.Text)
).Select(
p => string.Format("{0:x2}", p)
));