В настоящее время я работаю над проектом по управлению библиотекой. Он имеет 3 таблицы: TblUser, TblBook и TBlBookStatus. Когда пользователь резервирует книгу, идентификатор пользователя из TblUser, идентификатор книги из TblBook сохраняется в другой таблице (TblBookStatus). Я присоединяюсь и создаю новый список в своих таблицах базы данных на c3. Они хранятся в виде списков в моем коде C #. Приведенный ниже код создает список, в котором отображаются зарезервированные книги.
Примечание: я не подключал bookID и userID в качестве внешнего ключа на TblBookStatus по некоторым причинам, связанным с проектом.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using LibMan.Models.DB;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
namespace LibMan.Pages
{
public class LibraryModel : PageModel
{
private readonly LibMan.Models.DB.LibManContext _context;
public string Message { get; set; }
public LibraryModel(LibMan.Models.DB.LibManContext context)
{
_context = context;
DisplayBook = new List<TblBook>();
; }
public IList<TblBookStatus> TblBookStatus { get; set; }
public IList<TblBook> TblBook { get; set; }
public IEnumerable<TblBook> DisplayBook { get; set; }
public IList<TblUser> TblUser{ get; set; }
public async Task OnGetAsync()
{
TblBookStatus = await _context.TblBookStatus.ToListAsync();
TblBook = await _context.TblBook.ToListAsync();
TblUser = await _context.TblUser.ToListAsync();
if (TblBookStatus != null && TblBook != null){
DisplayBook = TblBook.Where(t => TblBookStatus.Any(ts => ts.BookId == t.BookId));
}
}
}
}
В строке DisplayBook = TblBook.Where(t => TblBookStatus.Any(ts => ts.BookId == t.BookId));
я показываю зарезервированную книгу через bookid, а не по пользователю. Я хочу отображать зарезервированные книги текущего пользователя, вошедшего в систему, а не всех пользователей зарезервированных книг. Итак, есть ли какой-либо способ реализовать это в приведенном выше лямбда-выражении? Я представляю себе что-то подобное, но мой синтаксис неверен.
DisplayBook = TblBook.Where(t => TblBookStatus.Any(ts => ts.BookId == t.BookId),a=> TblUser.Any(as=> as.UserId == a.UserId);
Спасибо за помощь!