Linq to sql 使用LINQ将内联选择查询写入SQl

Linq to sql 使用LINQ将内联选择查询写入SQl,linq-to-sql,Linq To Sql,如果头衔不合适,请原谅 如何使用linq to sql编写下面的sql查询,而不将其分成多个部分 select BookName, Author, TotalCopies=(select COUNT(*) from tbEHBookCopies c where c.BookID=b.BookID) from dbo.tbEHBooks b 我不知道你说的多个部分是什么意思。如果您的

如果头衔不合适,请原谅

如何使用linq to sql编写下面的sql查询,而不将其分成多个部分

select BookName,
       Author,
       TotalCopies=(select COUNT(*) 
                    from tbEHBookCopies c 
                    where c.BookID=b.BookID) 
from dbo.tbEHBooks b

我不知道你说的多个部分是什么意思。如果您的意思是它应该在一个查询上,那么您可以执行以下操作:

var allBooks = db.tbEHBooks.Select(x => new 
{
    x.BookName,
    x.Author,
    x.TotalCopies = db.tbEHBookCopies.Select(y => x.BookID == y.BookID).Count()
});

使用查询语法连接和分组。LINQSQL在分组方面有点不同。这种语法的优点是可以很容易地加入更多的表。而且它看起来更像一个SQL查询,只有“from”排在第一位,“select”排在最后

var bookQry = from b in db.tbEHBooks
              join c in db.tbEHBookCopies on b.BookID equals c.BookID
              group b by b into books
              select new { books.Key.BookName,
                           books.Key.Author,
                           TotalCopies = books.Count() };

此处是否需要任何语法更改?由于某些原因,其显示错误。'BookName','Author'在当前上下文中不存在现在这意味着什么“非发票成员'tbEHBookCopies'不能像方法一样使用”?我做了额外的更改。