2010-12-15 10 views
0

Ich konvertiere eine Liste von zu Liste und bekomme Fehler: "Typ der Bedingungsausdruck kann nicht bestimmt werden, da es keine implizite Konvertierung zwischen System.Collections.Generic.List und 'void' ? WarumFehler in Lambda: Keine implizite Konvertierung zwischen

return (topics.Select(c => new TopicUi() 
{ 
    Bookmarks = new List<Bookmark>().Add(new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName }) 
})).ToList(); 

Antwort

3

Die Add-Methode der Liste Rückgabetyp void hat, sollte dies für Sie arbeiten:

return (topics.Select(c => new TopicUi 
{ 
    Bookmarks = new List<Bookmark> { 
     new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName } 
    } 
})).ToList(); 
+0

Danke. Jetzt ist es behoben! :) – podeig

+0

@podeig, Vielleicht möchten Sie diese Antwort als akzeptiert setzen. – climbage

-1

IList.Add hat keinen Rückgabetyp Versuchen Sie dies,.

Func<YourCType, IList<Bookmark>> createBookmarkListFunc = (c) => 
{ 
    var list = new List<Bookmark>() { new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName }; 
    return list; 
}); 
return (topics.Select(c => new TopicUi() 
{ 
    Bookmarks = createListFunc(c) 
})).ToList(); 
1

Ganz am leat, diese Linie zu beheben

Bookmarks = new List<Bookmark>().Add(new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName })

Add ist ein Hohlraum ein Verfahren zum Zurückkehren. Die Zeile sollte

Bookmarks = new List<Bookmark> { new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName } }

sein, um richtig Sammlung Initialisierung zu verwenden.

+0

Danke für die Erklärung! Du liegst absolut richtig! – podeig

1

Anstatt die Add Methode der List<T> aufrufen, können Sie nur die Syntax Objektinitialisierung verwenden:

return (topics.Select(c => new TopicUi() 
{ 
    Bookmarks = new List<Bookmark>() 
        { new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName } } 
       ) 
})).ToList(); 
Verwandte Themen