2010-12-15 30 views
0

之間沒有隱式轉換我將一個列表轉換爲列表並獲取錯誤: 「無法確定條件表達式的類型,因爲System.Collections.Generic.List和'void'之間沒有隱式轉換, ?lambda中的錯誤:

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

爲什麼

回答

3

列表的Add方法有一個void返回類型,這應該爲你工作:

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

謝謝。現在它已經修復了! :) – podeig 2010-12-15 14:52:45

+0

@podeig,您可能想要將此答案設置爲接受。 – climbage 2010-12-15 15:19:23

-1

IList.Add沒有返回類型試試這個;

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

在非常,[254]解決這個線

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

Add是空隙返回方法。該行應

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

爲了正確使用集合初始化。

+0

感謝您的解釋!你是絕對正確的! – podeig 2010-12-15 14:54:02

1

而不是調用的List<T>Add方法,你可以使用對象初始化語法:

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