我将一个列表转换为列表并获取错误: “无法确定条件表达式的类型,因为System.Collections.Generic.List和'void'之间没有隐式转换
return (topics.Select(c => new TopicUi()
{
Bookmarks = new List<Bookmark>().Add(new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName })
})).ToList();
为什么?
答案 0 :(得分:3)
List的Add方法的返回类型为void,这应该适合您:
return (topics.Select(c => new TopicUi
{
Bookmarks = new List<Bookmark> {
new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName }
}
})).ToList();
答案 1 :(得分:1)
非常小,修好这一行
Bookmarks = new List<Bookmark>().Add(new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName })
Add
是一种返回void的方法。该行应
Bookmarks = new List<Bookmark> { new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName } }
为了正确使用集合初始化。
答案 2 :(得分:1)
您可以只使用对象初始化语法,而不是调用Add
的{{1}}方法:
List<T>
答案 3 :(得分:-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();