【发布时间】:2020-09-12 07:38:23
【问题描述】:
我目前正在从事图书馆管理项目。它有 3 个表,TblUser、TblBook 和 TBlBookStatus。当用户预订一本书时,来自 TblUser 的用户 ID、来自 TblBook 的 bookID 存储在另一个表(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 显示预订的书,而不是通过用户显示。
我想显示当前登录用户的预订书籍,而不是所有用户预订的书籍。那么有没有什么可能的方法可以在上面的 lambda 语句上实现呢?我在想象这样的事情,但是我的语法是错误的。
DisplayBook = TblBook.Where(t => TblBookStatus.Any(ts => ts.BookId == t.BookId),a=> TblUser.Any(as=> as.UserId == a.UserId);
感谢您的帮助!
【问题讨论】:
标签: c# asp.net razor ssms razor-pages