2011-05-04 61 views
0

是否有可能這個SQL轉換爲LINQ?將SQL轉換爲Linq - 如何?

SqlCommand cmd = new SqlCommand(@" 
WITH new AS (
    SELECT [UserSessionSequenceID], 
      [SessionGuid], 
      SiteID, 
      IP, 
      UrlTitle, 
      Url, 
      Referer, 
      BrowserWidth, 
      BrowserHeight, 
      [Timestamp], 
      ROW_NUMBER() OVER (PARTITION BY [SessionGuid] 
           ORDER BY UserSessionSequenceID DESC) AS sort 
    FROM [tblSequence] 
    WHERE SiteID = @siteID 
     AND [Timestamp] > DATEADD(mi, [email protected], GETDATE())) 
    SELECT TOP(@resultCount) 
     n.* 
    FROM new n 
    WHERE n.sort = 1 
    AND NOT EXISTS (SELECT NULL 
        FROM tblSequence s 
        WHERE s.siteid = n.siteid 
         AND s.sessionguid = n.sessionguid 
         AND [TimeStamp] <= DATEADD(mi, [email protected], GETDATE())) 
ORDER BY n.usersessionsequenceid DESC 
      "); 
      cmd.Parameters.Add("@resultCount", SqlDbType.Int).Value = resultCount; 
      cmd.Parameters.Add("@minutes", SqlDbType.Int).Value = minutes; 
      cmd.Parameters.Add("@siteID", SqlDbType.Int).Value = siteID; 

我有一個類,其中包含從名爲「SimpleSession」的SQL中選擇的所有字段。預先感謝您的幫助。

+1

您嘗試了什麼以及您卡在哪裏? – jeroenh 2011-05-05 12:09:02

回答

4

說實話,我寧願創建此語句查看和使用LINQ2SQL是簡單的觀點......

+0

我現在有了我的數據inMemory,而且我不再查詢數據庫 - 所以我需要做其他事情。 LINQ :-) – 2011-05-04 14:56:38

1

事實上,很多時候不過是沒有理由複雜的SQL轉換爲某種LINQ相當於(甚至在兼容的聲明的情況下)。

LinqToSql需要運行的任何LINQ命令時動態創建SQL命令。 那麼,爲什麼我們會想,如果開銷我們已經知道這是最好的SQL查詢來解決?

我們可以很容易地創建調用某些View或Stored Procedure的LINQ方法,並將其作爲類型化對象返回。您的程序將繼續全部面向對象,但不會產生不必要的開銷。

+0

我現在有我的數據inMemory,我根本就沒有查詢數據庫不再 - 所以我需要做些別的事情。 LINQ :-) – 2011-05-04 14:57:30

0

爲第一查詢u能在tblSequence.AsEnumerable使用此

選自SEQ() 其中seq.Field( 「SITEID」)== SITEID & & seq.Field( 「時間戳」)>日期時間。 Now.AddMinutes(分鐘) 選擇新 { seq.UserSessionSequenceID, seq.SessionGuid, seq.SiteID, seq.IP, seq.UrlTitle, seq.Url, seq.Referer, seq.BrowserWidth, seq.BrowserHeight, seq.Timestamp };

對於row_number請參考此How To Project a Line Number Into Linq Query Results