[英]How to filter LINQ query by table column and get count
我正在嘗試根據他們的狀況,按大學分類,列出學生名單。
所以我有三張桌子,學生和大學。 每個學生記錄都有一個狀態,可以是“預期”,“已接受”或“ WebApp”。 我需要做的是根據選擇的狀態獲取學生列表,然后顯示學院的名稱以及上該學院並將其狀態設置為傳入狀態的學生人數。我認為這需要是一個聚合查詢,因為計數來自字符串“狀態”字段。
我不確定如何在MS SQL中執行此操作,因為該計數來自同一張表,並且基於狀態字段的值。
這是查詢的開始,它包含搜索參數,但是我不知道如何過濾狀態以返回計數。
SELECT Colleges.Name, [Status], Count([Status])
FROM Students
JOIN Colleges ON Students.UniversityId = Colleges.id OR Students.+College = Colleges.Name
GROUP BY Students.[Status], Colleges.Name
ORDER BY Colleges.Name;
接受=狀態('已接受')WebApps =狀態('WebApp')總數=總和(Accpets + WebApps)
Select
Colleges.Name,
SUM(Case when Students.Status like 'Accepted' then 1 else 0 end) Accepts,
SUM(Case when Students.Status like 'WebApp' then 1 else 0 end) WebApps,
COUNT(*) Total
from Students
join Colleges on Students.UniversityId = Colleges.Id OR Students.CurrentCollege = Colleges.Name
Group by Colleges.Name
LINQ:
var results =
(from c in db.Colleges // db is your DataContext
select new
{
CollegeName = c.Name,
AcceptedStatus = db.Students.Count(r => r.Status.ToUpper() == "ACCEPTED" && (r.UniversityId == c.Id || r.CurrentCollege == c.Name)),
WebAppStatus = db.Students.Count(r => r.Status.ToUpper() == "WEBAPP" && (r.UniversityId== c.Id || r.CurrentCollege == c.Name)),
Total = db.Students.Count(s => s.UniversityId == c.Id || s.CurrentCollege == c.Name)
}).ToList();
免費試用此http://www.linqpad.net/ ,您可以將linq轉換為sql查詢
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.