2012-11-05 47 views
-6

我寫這個TSQL查詢如何這個T-SQL轉換爲LINQ

((SELECT Id,[Mesc] 
     ,[Line] 
     ,[Unit] 
     ,[Discription] 
     ,[InvQty] 
     ,[LastDateNil] 
     ,[StCode] 
     ,[PlanCode] 
     ,[MIN] 
     ,[MAX] 
     ,[LastDateConsum] 
     ,[PbsNo] 
     ,[PbsDate] 
     ,[PbsQty] 
     ,[PbsQtyRec] 
     ,[DateDelay] 
     ,[TypeRequest] 
     ,[HeaderId] 
    FROM [MyMaterialDB].[dbo].[Report2] 
    WHERE headerid IN(SELECT HeaderId FROM [MyMaterialDB].[dbo].[Report2] WHERE line='I')) 

    Order by Mesc,Line,unit 

我想這個轉換爲LINQ,但我biginet在LINQ,請幫助我。謝謝大家。

+1

你爲什麼要切換到LINQ而不先學習它?至少基本? –

+0

你試過了什麼,失敗了嗎(在「失敗」中,我指的是你所知道的每一個意想不到的行爲,所以如果你在問題關閉之前更新問題,讓我們知道究竟是如何失敗的)? – Leri

回答

3

除非它是一個錯字,內部的選擇是不需要:

SELECT [Id], [Mesc], <etc> 
    FROM [MyMaterialDB].[dbo].[Report2] 
    WHERE line='I' 
    ORDER BY Mesc,Line,unit 

所以,你的LINQ將是這樣的:

report2 
    .Select(x => new { x.Id, x.Mesc, <etc> }) 
    .Where(x => x.line == "I") 
    .OrderBy(x => x.Mesc) 
    .ThenBy(x => x.Line) 
    .ThenBy(x => x.unit) 

(NB了我的頭頂 - 可能需要稍微修正)。

+0

stusmith:謝謝你的幫助,但我的查詢是SELECT [Id],[Mesc], FROM [MyMaterialDB]。[dbo]。[Report2] WHERE headerid in(HeaderId FROM [Report2] WHERE line ='I ') –

+0

是的,我不認爲需要內部選擇:它是一個連接到同一個表('Report2'和'Report2')。 – stusmith