19 Stimmen

C# Linq - Kann IEnumerable<string> nicht implizit in List<string> konvertieren

Ich habe eine Liste wie folgt definiert:

public List<string> AttachmentURLS;

Ich ergänze die Liste wie folgt:

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

Aber ich erhalte diesen Fehler: IEnumerable kann nicht implizit in List konvertiert werden

Was mache ich falsch?

0 Stimmen

Haben Sie versucht, einen type cast hinzuzufügen? instruction.AttachmentURLS = (List<type, type>)curItem.Attributes... Ach ja, ich vergaß die Methode .ToList(). Fügen Sie diese einfach am Ende hinzu.

48voto

smoak Punkte 13826

Die Methode Where gibt ein IEnumerable<T> . Versuchen Sie hinzuzufügen

.ToList()

bis zum Ende wie folgt:

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

7voto

juharr Punkte 31014

Bewegen Sie die .ToList() bis zum Ende wie folgt

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

Die Erweiterungsmethode Where liefert IEnumerable<string> y Where funktioniert mit Arrays, so dass die ToList wird nicht benötigt, nachdem die Split .

2voto

Johnny Punkte 1555

El .ToList() sollte endlich sein. Denn in Ihrem Code führen Sie die .ToList() Operation vor und geht danach wieder in den vorherigen Zustand über. Die Methode Where gibt ein IEnumerable zurück.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X