使用LINQ to SQl编写内联选择查询

时间:2014-12-12 11:16:15

标签: linq-to-sql

如果标题不合适,请原谅..

如何用linq写sql查询到sql而不将它分成多个部分?

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

2 个答案:

答案 0 :(得分:0)

我不确定你的意思是多个部分。如果你的意思是它应该在一个查询上,那么你可以做类似的事情:

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

答案 1 :(得分:0)

使用查询语法加入和分组。 Linq-sql在分组方面略有不同。这种语法的好处是很容易加入更多的表。而且它看起来更像是一个SQL查询,只有"来自"首先是"选择"来了。

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() };