2011-04-01 92 views
3

我有以下SQL查詢,我想將它轉換爲LINQ。我想用一個子查詢或LINQ include語法和不想使用join如何將此SQL查詢轉換爲LINQ到SQL

SELECT Count(*) AS CountOfRecs 
FROM tblAcc a 
INNER JOIN tblAccOwner o ON 
    a.[Creditor Registry ID] = o.[Registry ID] AND 
    a.[Account No] = a.[Account No] 
WHERE 
    (a.[Account Owner ID] = 731752693037116688) AND 
    a.[Account Type] NOT IN ('CA00', 'CA01', 'CA03', 'CA04', 'CA02', 
          'PA00', 'PA01', 'PA02', 'PA03', 'PA04')) AND 
    (DATEDIFF(mm, a.[State Change Date], GETDATE()) <= 4 OR 
    a.[State Change Date] IS NULL AND 
    (a.[Account Type] IN ('OD','CL00','PL00') OR a.[Account Type] LIKE '%hala%')) 
+1

你爲什麼不把你的項目的其餘部分,而我們也可以做到這一點!如何你的一些努力 - 你想達到什麼?你的桌子是什麼樣的?你有什麼嘗試和什麼不工作?如何格式化你的SQL更好一點... – 2011-04-01 13:09:09

+0

嗨傑夫:我是Linq新手。我想通過我在兩張桌子上加入來計數。我是SQL方面的專家,並且很少使用LINQ,所以我來參加這個論壇。我不打算在這裏發佈我的所有項目。 – DotnetSparrow 2011-04-01 13:14:55

+0

夠公平的,但Geoff的一些觀點仍然存在,您嘗試了什麼,那麼它不會產生您預期的結果?你可以發佈你的一些代碼嗎? – Bazzz 2011-04-01 13:23:42

回答

3

您可以使用LinqPadLinqer。我會嘗試在LinqPad中將其轉換,但我必須擁有數據庫。

+0

@dample:我有LinqPad,但我沒有看到將SQL轉換爲Linq的選項 – DotnetSparrow 2011-04-01 13:10:34

+0

@DotnetSparrow檢查此[鏈接](http://i51.tinypic.com/2heajup.png) – Damb 2011-04-01 13:15:02

+0

您應該得到您的查詢的'翻譯' (它適用於linq查詢)在sql和lambda中。相同的行爲應該在其他方向工作(sql> linq)。即使它不能按需要工作,仍然可以使用Linqer,它實際上是LINQ工具的SQL。所以我不明白爲什麼我會在這方面得到低估。 – Damb 2011-04-01 13:18:33

3

把它轉換成Linq應該是相當容易的 - 儘管我想你應該使用join如果你想要相同的查詢!

首先創建LINQ2SQL模型,並導入2個表,然後將查詢將具有通用結構

var query = from acc in db.Accs 
    join accOwner in db.AccOwners on {acc.regId, acc.AccountNo} equals {accOwner.regId, accOwner.AccountNo} 
    where // your where conditions 
      // - these should all convert quite easily 
      // - just translate them one by one 
    select acc; 

var count = query.Count(); 

如果你真的需要使用子查詢,然後因爲你是在SQL方面的專家,那麼先將查詢寫入SQL,然後再進行測試,然後將查詢翻譯成Linq,然後測試它 - 逐行翻譯你會很好 - 你也會發現Intellisense非常棒!


請也意識到,如果你使用.Include()那麼你可能使用生成的SQL內join反正。

+0

謝謝,但我需要使用子查詢或包括和沒有連接 – DotnetSparrow 2011-04-01 13:26:50

+0

在這種情況下,我已經更新了我的建議 - 首先使用事實,你是SQL的專家,首先在SQL中將查詢轉換爲非連接格式。 – Stuart 2011-04-01 13:33:06