具有以下表結構粗糙的Linq查詢
我需要改編的由狀態,其中記錄沒有一個工作流文件夾中的計數。這確實的伎倆:
from p in Transcriptions
where p.WorkflowfolderID == null
group p by p.TranscriptionStatus.Description into grouped
select new
{
xp=grouped.Key,
xp1= grouped.Count(),
}
現在我需要通過date.Something像
EntityFunctions.DiffHours(p.DueOn,DateTime.Today)>0
如何做補充的記錄數,其中Dueon日期是過去在它是過去由於我將它包含在結果集中而不觸發2個SQL查詢?我很高興把它作爲第三列,每行都有相同的值。無論如何,有百分比混合如下:
狀態| Count | %|
------------------------------
Status1 | 20 | 20%
狀態2 | 30 | 30%
狀態3 | 30 | 30%
逾期| 20 | 20%
我已經添加了Overdue作爲一行,但非常樂意將它作爲具有相同值的列。
編輯的內容
嗯,這是我能拿出最好的。它不是一個單一的查詢,但只有一個SQL旅程。其結果是:
狀態1計數
----------------
狀態1 | 20
狀態2 | 30
狀態3 | 30
逾期| 20
var q1= from p in Transcriptions
where p.WorkflowfolderID == null
group p by p.TranscriptionStatus.Description into grouped
select new
{
status= (string)grouped.Key,
count= grouped.Count()
};
var q2 =(
from p in Transcriptions select new {status = "Overdue",
count = (from x in Transcriptions
where x.DueOn.Value < DateTime.Now.AddHours(-24)
group x by x.TranscriptionID into
grouped select 1).Count() }).Distinct();
q1.Union(q2)
它一旦結果返回給做與計算%一個聯盟條款。奇怪的是,我無法找出任何干淨的方式來表示LINQ語句中的以下SQL,這導致了var q2中相當混亂的LINQ。
SELECT COUNT(*) , 'test' FROM [Transcription]
'計數(謂語)'不是由LINQ到實體的支持。 – MarcinJuraszek 2013-04-24 08:09:59
@MarcinJuraszek。它是(也許不是5.0之前?)。 – 2013-04-24 08:21:56