2014-09-04 77 views
-2

我需要寫一個LINQ實體狀態,可以得到下面的SQL查詢LINQ到實體加入表OR條件

SELECT [CallID]  
    ,[AgentID] 
    ,[AgentName]  
    ,[CallQueue] 
    ,[CallStartTimeStamp] 
    ,[CallEndTimeStamp] 
    ,[CallType]  
    FROM [gbrecording].[dbo].[CallInfo] ci 
    join [gbrecording].[dbo].[SCQueues] q on 
    (ci.CallQueue = q.Queue_name or q.Queue_name = 'All') 
    WHERE ([CallStartTimeStamp] >= @from) AND ([CallStartTimeStamp] <= @to) 
    and (q.user_id = @user or q.user_id = 'All') 
    and ci.[AgentID] = @agent 

我有問題,在JOIN條件(ci.CallQueue = q.Queue_name或q.Queue_name = '所有') 我試試這個

var query = from c in recobject.CallInfoes      
      join a in recobject.SCQueues on c.CallQueue equals a.Queue_name 
      join d in recobject.SCUsers on a.user_id equals d.id 
      where 
      c.CallStartTimeStamp <= pto 
      && c.CallStartTimeStamp >= pfrom      
      && d.user == GetUser 
      && (c.AgentID == agent || agent == "All") 
      && c.CallIDChar.Contains(CallID) 
      select new 
      { 
      .... 
      }; 

如何添加條件 「OR q.Queue_name = '所有'」 的實體加盟

join a in recobject.SCQueues on c.CallQueue equals a.Queue_name 
+0

究竟是什麼錯誤?你有錯誤嗎?如果是這樣,則發佈錯誤(並在適當的情況下堆棧跟蹤)。你得到錯誤的結果?如果是這樣,請發佈輸入和期望的輸出。 – Jonny 2014-09-04 13:35:38

+0

看到您當前的LINQ查詢也會有所幫助 – 2014-09-04 13:38:38

+0

我無法找到如何轉換SQL查詢:join [gbrecording]。[dbo]。[SCQueues] q on(ci.CallQueue = q.Queue_name or q。 Queue_name ='All')這個實體(我的意思是添加條件「或」):加入一個recobject.SCQueues on c.CallQueue等於a.Queue_name – user3132346 2014-09-04 14:31:12

回答

0

您可以將條件(q.Queue_name ='All')也放在where子句中。