Ошибка в лямбде: нет неявного преобразования между - PullRequest
0 голосов
/ 15 декабря 2010

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

Почему?

Ответы [ 4 ]

3 голосов
/ 15 декабря 2010

Метод Add для List имеет тип возврата void, он должен работать для вас:

return (topics.Select(c => new TopicUi
{
    Bookmarks = new List<Bookmark> {
      new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName }
    }
})).ToList();
1 голос
/ 15 декабря 2010

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

return (topics.Select(c => new TopicUi()
{
    Bookmarks = new List<Bookmark>() 
                  { new Bookmark { Id = c.BookmarkId, Name = c.BookmarkName } }
                )
})).ToList();
1 голос
/ 15 декабря 2010

По крайней мере, исправьте эту строку

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 голосов
/ 15 декабря 2010

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...