Добро пожаловать в StackOverflow!
Прежде всего, рассмотрим первый комментарий с точки зрения очистки некоторых из общего стиля. Код очень сложен для чтения, также как и вопрос с несколькими разделенными блоками кода.
Синтаксическая ошибка проблемной строки решается путем изменения ее на следующее (есть
y.Attribute("Secondaries").Value.Trim(trim).Replace(" ", "").ToLower().Split(',').ToList())
Вам не нужно выполнять кастинг, поскольку ToList () уже сделает его списком.
Это конец проблемы с компилятором.
Что касается создания более чистого кода, рассмотрите возможность создания вспомогательных функций:
// move 'trim' into an accessible memory location
private string SanitizeInput (string input)
{
return input.Trim(trim).Replace(" ", "").ToLower();
}
// Having a function like this will change your solution code from the line above to:
SanitizeInput(y.Attributes("Secondaries).Value).Split(',').ToList();
// This line is much easier to read as you can tell that the XML parsing is happening, being cleaned, and then manipulated.
Еще одна вещь, которую стоит рассмотреть, Word.Ssecondaries (похоже, у вас может быть опечатка в имени вашего параметра?) - посмотреть, можно ли установить это свойство в IEnumerable. Было бы опасно хранить его в виде списка, поскольку любой код может изменить Word.Secondaries. Если вы не собираетесь менять его, IEnumerable будет намного безопаснее.
Если вы обнаружите, что IEnumerable удовлетворяет вашим потребностям, вы можете удалить .ToList () в вашей проблемной строке и избежать необходимости выделять новый кусок памяти для вашего списка, а также иметь более быстрый код с лениво оцененными запросами из LINQ
.