2015-02-11 41 views
0

我試圖建立一個基於此LINQ查詢:複雜的T-SQL到LINQ查詢:內部連接,通過組,選擇

select 
    SERVICE_REQUEST_CR.SRCR_FK_SR, SERVICE_REQUEST.SR_TX_NAME, 
    AC_USER.USER_TX_NAME, SERVICE_REQUEST_CR.SRCR_DT_CREATED, 
    SERVICE_REQUEST_CR_STATUS.SRCRST_TX_DESCRIPTION, 
    COUNT(SERVICE_REQUEST_PROGRAM.SRPG_FK_SR_ID) as Activities 
from 
    SERVICE_REQUEST_CR 
inner join 
    AC_USER on AC_USER.USER_ID = SERVICE_REQUEST_CR.SRCR_FK_REQUESTOR 
inner join 
    SERVICE_REQUEST_CR_STATUS on SERVICE_REQUEST_CR_STATUS.SRCRST_ID = SERVICE_REQUEST_CR.SRCR_FK_CR_STATUS 
inner join 
    SERVICE_REQUEST on SERVICE_REQUEST.SR_ID = SERVICE_REQUEST_CR.SRCR_FK_SR 
inner join 
    SERVICE_REQUEST_PROGRAM on SERVICE_REQUEST_PROGRAM.SRPG_FK_SR_ID = SERVICE_REQUEST_CR.SRCR_FK_SR 
group by 
    SERVICE_REQUEST_CR.SRCR_FK_SR, SERVICE_REQUEST.SR_TX_NAME, 
    AC_USER.USER_TX_NAME, SERVICE_REQUEST_CR.SRCR_DT_CREATED, 
    SERVICE_REQUEST_CR_STATUS.SRCRST_TX_DESCRIPTION, 
    SERVICE_REQUEST_PROGRAM.SRPG_FK_SR_ID 

這是據我能想出:

Dim x = From cr In db.SERVICE_REQUEST_CR 
     Join usr In db.AC_USER On usr.USER_ID Equals cr.SRCR_FK_REQUESTOR 
     Join crSt In db.SERVICE_REQUEST_CR_STATUS On crSt.SRCRST_ID Equals cr.SRCR_FK_CR_STATUS 
     Join sr In db.SERVICE_REQUEST On sr.SR_ID Equals cr.SRCR_FK_SR 
     Join srProg In db.SERVICE_REQUEST_PROGRAM On srProg.SRPG_FK_SR_ID Equals cr.SRCR_FK_SR 

有人能幫我嗎?這是令人困惑的分組,所以我只是把連接和查詢保持簡單。

感謝,

回答

0

這樣的事情,但我不知道基本的語法:

Dim x = From cr In db.SERVICE_REQUEST_CR 
     Join usr In db.AC_USER On usr.USER_ID Equals cr.SRCR_FK_REQUESTOR 
     Join crSt In db.SERVICE_REQUEST_CR_STATUS On crSt.SRCRST_ID Equals cr.SRCR_FK_CR_STATUS 
     Join sr In db.SERVICE_REQUEST On sr.SR_ID Equals cr.SRCR_FK_SR 
     Join srProg In db.SERVICE_REQUEST_PROGRAM On srProg.SRPG_FK_SR_ID Equals cr.SRCR_FK_SR 
group new 
{ 
    cr.SRCR_FK_SR, 
    sr.SR_TX_NAME, 
    usr.USER_TX_NAME, 
    cr.SRCR_DT_CREATED, 
    crSt.SRCRST_TX_DESCRIPTION, 
    srProg.SRPG_FK_SR_ID 
} 
by new 
{ 
    cr.SRCR_FK_SR, 
    sr.SR_TX_NAME, 
    usr.USER_TX_NAME, 
    cr.SRCR_DT_CREATED, 
    crSt.SRCRST_TX_DESCRIPTION, 
    srProg.SRPG_FK_SR_ID 
} into gr 
select new 
{ 
    gr.Key.SRCR_FK_SR, 
    gr.Key.SR_TX_NAME, 
    gr.Key.USER_TX_NAME, 
    gr.Key.SRCR_DT_CREATED, 
    gr.Key.SRCRST_TX_DESCRIPTION, 
    gr.Key.SRPG_FK_SR_ID, 
    Activities = gr.Count() 
} 
+0

這是相當多的。我會將其轉換爲基本。 – 2015-02-12 18:16:48