2015-07-21 64 views
0

我想這個簡單sql查詢轉換爲linq to sql查詢簡單的SQL查詢轉換爲LINQ to SQL的

SELECT * INTO temptable from EFESRDP0 
ALTER TABLE temptable DROP COLUMN PASSWORD,SECONDPASS 
SELECT * FROM temptable 
DROP TABLE temptable 

但我不能。 Anyhelp將不勝感激,謝謝。

+1

使用Linqpad或Linqer工具將sql查詢轉換爲linq。 –

+0

LinqPad將SQL轉換爲Linq?我不知道。你能告訴如何做到這一點。 –

回答

3

由於Linq to SQL沒有與您嘗試執行的表操作等效,所以最簡單的答案就是您無法做到這一點。

從查詢的結構,雖然它看起來像下面發生的事情:

  1. EFESRDP0所有記錄被添加到以前不存在的表temptable

  2. 幾列被丟棄from temptable

  3. 其餘數據作爲記錄集返回

  4. 臨時表被刪除

這是指定列的列表,從原來的表中返回的囉嗦了,是不是?壞的SQL不應該變成更糟糕的LINQ,它應該是固定的。

在查詢語法,簡單的形式是:

var results = 
    from row in context.EFESRDP0 
    select new { row.ID, row.Name, row.LastLoginTime /* or whatever */ }; 

這將導致類似於SQL查詢:

SELECT ID, Name, LastLoginTime 
FROM EFESRDP0; 

這是比你張貼,並出現SQL簡單一大堆在沒有所有桌子體操的情況下做基本相同的事情。

+0

對不起,但你得到了關於查詢錯誤的想法,我擺脫了那個SQL查詢某一列,如果有另一種方式做到這一點告訴我請,但據我所知這是唯一的方法來獲得擺脫一列而不實際從數據庫中刪除它。因此,你的提議與我所尋找的有所不同 – BarisY

+0

我認爲Corey所說的就是現場。你的SQL語句正如他所說的那樣。您所做的只是從EFESRDP0中選擇除2之外的所有列。例如,如果你本來有EFESRDP0像列: 字段1,字段2,密碼,SECONDPASS 那麼你的SQL語句是有效的這樣做: 選擇場,場2從EFESRDP0 就像科裏說。 –

+0

爲什麼我堅持使用該查詢有一個原因,在表efesrdp中總共有15列,因此構建這樣的查詢是不方便的。這就是我使用這個查詢的原因。 **編輯:但我知道沒有辦法改變它。所以我接受這個答案,謝謝大家的關注。 ** – BarisY

0

由於您的SQL語句有效地返回除密碼和SECONDPASS以外的所有列,因此您可以使用像Corey這樣的簡單Linq創建一個新的匿名類型。您也可以使用除2之外的所有列定義類型,以便獲得類型化結果。即:此示例僅返回示例Northwind..Customers表中的3列:

void Main() 
{ 
    DataContext db = new DataContext(@"server=.\SQLexpress;trusted_connection=yes;database=Northwind"); 
    Table<Customer> Customers = db.GetTable<Customer>(); 

    // for LinqPad 
    //Customers.Dump(); 

} 

[Table(Name = "Customers")] 
public class Customer 
{ 
    [Column] 
    public string CustomerID { get; set; } 
    [Column] 
    public string ContactName { get; set; } 
    [Column] 
    public string CompanyName { get; set; } 
}