AminMhmdi Ответов: 1

Выберите конкретное поле справочной таблицы с помощью linq


привет
у меня есть книжный стол и в каждой книге есть много глав
я создаю ниже класс для своей сущности

public class Book
    {
        [Key]
        public int BookID { get; set; }

        [MinLength(10,ErrorMessage = "ISBN Minimum size should be 10"),MaxLength(13,ErrorMessage = "Maximum Lenght of ISBN should be 13 ")]
        public string ISBN { get; set; }
        public string bookName { get; set; }
        public string bookSummery { get; set; }
        public string bookAuthor { get; set; }

        public string bookTranslator { get; set; }
        
    
        public virtual ICollection<Chapter> Chapters { get; set;}

    }


 public class Chapter
    {
        public int ChapterId { get; set; }

        public string chapterName { get; set; }

        [ForeignKey("Book")]
        public int BookRefId { get; set; }
        public virtual Book Book { get; set; }
    }


я хочу просто выбрать конкретное поле моей главы(в этом примере только имя главы)

Что я уже пробовал:

<pre>var _books = (from _b in db.Books
                          select new
                          {
                              _b.ISBN,
                              _b.BookID,
                             _b.bookName,
                             _b.bookSummery,
                             _b.Chapters = _b.Chapters.Select(details => new {
             
                                  details.chapterName,
                                 
                              },
                          });


но этот код не работает для меня

0x01AA

"не работай на меня" означает что именно?

Maciej Los

Кажется, вы хотите получить названия книг и глав. Если я не ошибаюсь, вы должны использовать SelectMany инструкция.

AminMhmdi

в нем говорится, что выражение Include path должно ссылаться на свойство навигации, определенное в типе. Используйте пунктирные пути для ссылочных навигационных свойств и оператор Select для свойств навигации коллекции.

1 Ответов

Рейтинг:
4

AminMhmdi

я нахожу решение

var _books = (from _b in db.Books
                         select new
                         {
                             _b.bookAuthor,
                             _b.bookCountry,
                             _b.BookID,
                             _b.bookName,
                             _b.bookTranslator,
                             _b.bookImage,
                             _b.bookPrice,
                             _b.bookTotalTime,
                             _b.Category,
                             chapters = from _ch in _b.Chapters
                                        select new
                                        {
                                            _ch.ChapterId,
                                           _ch.chapterName

                                        }
                         });


это решит мою проблему.