对于一个项目,我正在显示要添加到购物篮的书籍。我需要联接3个表才能显示可用的格式:我要做的是:将bookIDs上的BookFormats转换为BookFormats,然后将formatID上的BookFormats转换为Format。这是一个预设的数据库,我无法更改。我编写了一个LINQ查询以全部显示它们,并创建了具有所有3个属性的视图模型。

linq查询:

        IEnumerable<BookAndFormatViewModel> IEBooksRepository.GetAllBooksWithFormats()
    {
        var query =
            from book in eBooks.Books
            join format in eBooks.BookFormats on book.BookID equals format.BookID
            join formatName in eBooks.Formats on format.FormatID equals formatName.FormatID
            select new BookAndFormatViewModel();
        return query.ToList();


三个视图模型:

    public int BookID { get; set; }
    public string ReferenceNumber { get; set; }
    public string Title { get; set; }
    public decimal Price { get; set; }
    public int FormatID { get; set; }
    public string FormatType { get; set; }


控制器代码:

        IEnumerable<BookModel> books = repository.GetAllBooks();
        IEnumerable<BookAndFormatViewModel> booksWithFormat = repository.GetAllBooksWithFormats();

        if (books.Count() == 0)
        {
            return PartialView("NoBooks");

        }
        return PartialView("Books", booksWithFormat);


当我运行它时,它只显示0的空数据和空字段。

最佳答案

最后的解决方法是更改​​模型的构造函数,然后按如下方式创建模型:

            var query =
            from book in eBooks.Books
            join format in eBooks.BookFormats on book.BookID equals format.BookID
            join formatName in eBooks.Formats on format.FormatID equals formatName.FormatID
            select new BookAndFormatViewModel
            {
                BookID = book.BookID,
                ReferenceNumber = book.ReferenceNumber,
                Title = book.Title,
                Price = book.Price,
                FormatID = format.FormatID,
                FormatType = formatName.FormatType
            };

关于c# - MVC ASP 3表联接然后显示结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32736893/

10-11 02:15
查看更多