Страницы

Поиск по вопросам

понедельник, 17 июня 2019 г.

LINQ, заполнить вложенный объект по Id

Имеем два класса:
public class Book { public int Id { get; set; } public BookCategory BookCategory { get; set; } }
public class BookCategory { public int Id { get; set; } public string Name { get; set; } }
помогите заполнить список книг категориями
var books = new List() { new Book { Id = 1, BookCategory = new BookCategory { Id = 1 } }, new Book { Id = 2, BookCategory = new BookCategory { Id = 1 } }, new Book { Id = 3, BookCategory = new BookCategory { Id = 2 } }, new Book { Id = 4, BookCategory = new BookCategory { Id = 2 } } }; var categories = new List { new BookCategory { Id = 1, Name = "Первая категория" }, new BookCategory { Id = 2, Name = "Вторая категория" } };
List booksWithCategories = //linq;
Update:
я Хочу получить список объектов Book с заполненным BookCategory.Name


Ответ

Вариант с созданием новых книг:
List booksWithCategories = books.Select(b => new Book() { BookCategory = categories.SingleOrDefault(c => c.Id == b.BookCategory.Id), Id = b.Id }).ToList();
Вариант с заполнением старых книг:
books.ForEach(b => b.BookCategory = categories.SingleOrDefault(c => c.Id == b.BookCategory.Id)); List booksWithCategories = books.ToList();

Комментариев нет:

Отправить комментарий