Подтвердить что ты не робот

С# Linq - не может неявно преобразовать IEnumerable <string> в List <string>

У меня есть список, определенный следующим образом:

public List<string> AttachmentURLS;

Я добавляю элементы в список следующим образом:

instruction.AttachmentURLS = curItem.Attributes["ows_Attachments"].Value.Split(';').ToList().Where(Attachment => !String.IsNullOrEmpty(Attachment));

Но я получаю эту ошибку: не могу неявно преобразовать IEnumerable в List

Что я делаю неправильно?

4b9b3361

Ответ 1

Метод Where возвращает IEnumerable<T>. Попробуйте добавить

.ToList()

до конца так:

instruction.AttachmentURLS = curItem.Attributes["ows_Attachments"].Value.Split(';').ToList().Where(Attachment => !String.IsNullOrEmpty(Attachment)).ToList();

Ответ 2

Переместите .ToList() до конца, как это показано

instruction.AttachmentURLS = curItem
    .Attributes["ows_Attachments"]
    .Value
    .Split(';')
    .Where(Attachment => !String.IsNullOrEmpty(Attachment))
    .ToList();

Метод расширения Where возвращает IEnumerable<string> и Where будет работать с массивами, поэтому ToList не нужен после Split.

Ответ 3

.ToList() должен быть наконец. Потому что в вашем коде вы выполняете операцию .ToList() раньше, а затем снова переходите к предыдущему состоянию. Метод Where возвращает IEnumerable.