I have a List defined like this :
public List AttachmentURLS;
 
I am adding items to the list like this:
instructio         
        Move the .ToList() to the end like this
instruction.AttachmentURLS = curItem
    .Attributes["ows_Attachments"]
    .Value
    .Split(';')
    .Where(Attachment => !String.IsNullOrEmpty(Attachment))
    .ToList();
The Where extension method returns IEnumerable<string> and Where will work on arrays, so the ToList isn't needed after the Split.
The Where method returns an IEnumerable<T>. Try adding
.ToList()
to the end like so:
instruction.AttachmentURLS = curItem.Attributes["ows_Attachments"]
  .Value.Split(';').ToList()
  .Where(Attachment => !String.IsNullOrEmpty(Attachment))
  .ToList();
                                                                        The .ToList() should be at last. Because in your code you perform the .ToList() operation earlier and after that again it goes to previous state. The Where method returns an IEnumerable.