我有麻煩試圖代表SQL以下(返回的結果我想)在LINQ CASE語句:LINQ到SQL - 與子查詢
select
case r.CategoryID
when 2 then
case r.PrimaryRecord
when 1 then r.RecordID
else (select RecordID from Record where RecordGroupID = r.RecordGroupID and PrimaryRecord = 1)
end
else
r.RecordID
end
as RecordID
, r.FooID
from Record r
where
r.FooID = 3
在記錄表的每一行都有一個唯一的recordId。多個RecordID可能與CategoryID 2的RecordGroupID關聯,但其中只有一個PrimaryRecord字段值爲1.
給定下面的數據表,我所需的輸出是RecordID = 1,FooID = 3,即給定RecordGroupID的RecordID是PrimaryRecord,但是匹配我的Where子句的給定行的FooID。
RecordID RecordGroupID PrimaryRecord CategoryID FooID
1 1 1 2 1
2 1 0 2 1
3 1 0 2 3
我很欣賞SQL本身可能不是世界上最高效的SQL,但它是我能想到的最好的SQL。
如果任何人都可以幫助我創建LINQ語句來表示這個查詢,那就太棒了。
什麼是't.PrimaryRecord'?您的查詢中沒有在任何地方定義't'。 – Yuck 2012-04-02 13:14:29
@Yuck - 道歉,是一個錯字。現在修復。 – 2012-04-02 13:18:53
@Yuck - 只是想說謝謝你發佈和刪除的答案。儘管我重寫了SQL,但是如果我沒有選擇,那麼看看它是如何完成的,這是非常有用的。 – 2012-04-02 13:40:34