2014-04-22 111 views
0

如何將此SQL轉換爲LINQ?快速幫助:將SQL轉換爲LINQ

我正在閱讀它,但只是把它放在那裏,以防我無法做到這一點。

 SqlConnection connection = new SqlConnection 
     { 
      ConnectionString = ConfigurationManager.ConnectionStrings["HBOS"].ConnectionString 
     }; 

     connection.Open(); 

     foreach (ExchangeRateData x in exchangeRateDatas.ExchangeRateDataList) 
     { 
      SqlCommand cmd = new SqlCommand("UPDATE dbo.CurrencyExchange " + 
              "SET Rate = '" + x.Rate + "', DateTimeStamp = CAST('" + x.TimeStamp + 
              "' AS DATETIME), CreatedBy = '" + x.CreatedBy + "', RateInv = '" + 
              x.RateInv + "' " + 
              "WHERE Currency = '" + x.ToCurrency + "';", connection); 
      // Sql query and connection 
      cmd.ExecuteNonQuery(); 
     } 

     connection.Close(); 
+1

Linq是_querying_ not _updating_。如果您想更新數據,您可以像繼續使用ADO一樣繼續使用ADO,或者使用其他ORM(如實體框架)。如果你繼續使用ADO,我會切換到使用參數而不是連接SQL。 –

+0

但是我的老闆說這是做這件事的老方法。有沒有LINQ的方式來做同樣的事情?他只是想LINQ的一切。 – NoName

+0

然後你的老闆不明白Linq是什麼。 Linq沒有更新數據的機制 - 只能查詢它。 –

回答

3

創建dbcontext第一

然後

CurrencyExchange CurrencyExchangeObject = context.CurrencyExchange 
             .Where(a => a.Currency = x.ToCurrency) 
             .FirstOrDefault(); 

後,你可以簡單的分配值 像

CurrencyExchangeObject.Rate = x.Rate; 
CurrencyExchangeObject.DateTimeStamp = Convert.ToDateTime(x.TimeStamp); 

,然後簡單地說

context.SaveChanges(); 
+0

好吧,我想我必須先設置EF。 – NoName

0

聽起來像你的老闆正在尋找一個LINQ to SQL實現。不幸的是,你的問題沒有一個快速的答案,因爲添加這個功能需要的不僅僅是「將查詢轉換爲LINQ」,因爲有很多事情需要讓你的環境設置來支持它。

你可能要開始與話題的一些基本的谷歌搜索:

第一對夫婦的結果:

http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx http://msdn.microsoft.com/en-us/library/bb386976(v=vs.110).aspx

的LINQ to SQL具有更廣泛使用的表姐叫實體框架,這不依賴於SQL Server。您也可以考慮這一點。