[英]Linq using join and grouping
我正在嘗試做一些非常簡單的事情。 我的數據庫中有兩個表,我想使用linq查詢。 書本表和GenreTypes表。 該查詢的結果將轉到我的Web Api。
這是一個代碼片段:
public List<BooksChart> GetBooksChart()
{
var results = from b in _dbcontext.Books
join g in _dbcontext.GenreTypes
on b.GenreTypeId equals g.Id
group g by g.Name into n
select (z => new BooksChart
{
category_name = n.Key,
value = n.Count()
}).ToList();
return results;
}
public class BooksChart
{
public string category_name;
public int value;
}
我想將分組“ n”的結果存儲在BooksChart類中以構造Api。
此代碼未編譯。
以前,我只查詢Books的一個表,該表分為Books和GenreTypes。
我之前用於查詢圖書的工作代碼是:
var results = _dbcontext
.Books
.GroupBy(x => x.GenreType)
.Select(z => new BooksPieChart
{
category_name = z.Key,
value = z.Count()
}).ToList();
return results;
編輯
我要在SQL中實現的目標如下:
select count(*), g.Name
from books b, GenreTypes g
where b.GenreTypeId = g.Id
group by g.Name;
您正在混合查詢和方法的兩個語法選項。 對於查詢語法,您需要像這樣進行投影( select
):
return (from b in _dbcontext.Books
join g in _dbcontext.GenreTypes on b.GenreTypeId equals g.Id
group g by g.Name into n
select new BooksChart {
category_name = n.Key,
value = n.Count()
}).ToList();
(z =>....)
的格式是傳遞給Select
方法的labmda的聲明。
網站說明:
from
使用joins
而不是多個表: INNER JOIN ON vs WHERE子句 括號必須包圍整個查詢,如下所示:
var results = (from b in _dbcontext.Books
join g in _dbcontext.GenreTypes
on b.GenreTypeId equals g.Id
group g by g.Name into n
select new BooksChart
{
category_name = n.Key,
value = n.Count()
}).ToList();
編譯錯誤是由於此原因(z =>
根本不需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.