2010-12-15 4 views
0

Я конвертирую один список из списка и получаю ошибку: «Тип условного выражения не может быть определен, потому что нет никакого неявного преобразования между 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(); 

Почему

ответ

3

Метод Add из списка имеет тип возврата недействительным, это должно работать для вас:

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

-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

В самом Лит, исправить эту линию

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

Вместо вызова Add метод List<T>, вы можете просто использовать синтаксис инициализации объекта:

return (topics.Select(c => new TopicUi() 
{ 
    Bookmarks = new List<Bookmark>() 
        { new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName } } 
       ) 
})).ToList(); 
Смежные вопросы