SQL 到 IQueryable LINQ

Pav*_*ják 5 c# sql linq asp.net-mvc

您好,我正在尝试将以下 SQL 语句转换为其等效的 LINQ 语句,并且由于我对 .net 真的很陌生(编码了一天),因此我已经被困在这个问题上好几个小时了。

SELECT * 
 FROM Books 
 WHERE BookID IN (SELECT BookID 
              FROM Borrows 
              WHERE UserID = 2) 
Run Code Online (Sandbox Code Playgroud)

这是模型

public class LibUser
{       
    [Key]
    public int UserID { get; set; }
    [Required, StringLength(50), Display(Name = "First Name")]
    public string UserFirstName { get; set; }
    [Required, StringLength(50), Display(Name = "Last Name")]
    public string UserLastName { get; set; }
    [Required, StringLength(10000), Display(Name = "Residence"), DataType(DataType.MultilineText)]
    public string Adress { get; set; }
}

public class Book { 
    [Key]
    public int BookID { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }
    public DateTime Published{ get; set; }
}

public class Borrowed {
    [Key]
    public int BorrowID { get; set; }
    public int UserID { get; set; }
    public int BookID { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何人的帮助。

编辑

上下文类

public class LibraryContext : DbContext
{

          public LibraryContext()
        : base("libromatic")
    {
    }

    public DbSet<LibUser> LibUsers { get; set; }
    public DbSet<Book> Books { get; set; }
    public DbSet<Borrowed> Borrows { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

bum*_*una 3

你可以这样做:

var Lnq = new LinqDataContext();
var borrowId = Lnq.Borrowed.Where(a => a.UserID == 2).Select(a => a.BookID).ToList();

var bookQuery = Lnq.Books.Where(a => borrowId.Contains(a.BookID))
                         .Select(a => a.YourColumn);
Run Code Online (Sandbox Code Playgroud)