簡體   English   中英

如何按表列過濾LINQ查詢並獲取計數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM