2012-08-25 189 views
0

我有以下SQL语句在C#中转换为LINQ。 @amount变量将是一个C#变量。将此SQL转换为LINQ

DECLARE @amount DECIMAL(20,2) 
SET @amount = 120.30 

UPDATE INVOICES SET AmtPaid = AmtPaid + @amount WHERE InvoiceNum = 'AC0000034550' 
+0

您是否使用LINQ to SQL或实体框架? – Lee

回答

0

为什么不用linq选择一个然后迭代列表并更新变量?

0

LINQ没有做更新,所以你不能在SQL转换为LINQ

3

不能UPDATE与LINQ。

LINQ是查询引擎,适用于SELECT(如果我们谈论原始SQL)。

另外,如果你已经有很好的工作SQL代码,它没有任何意义把它转换成LINQ; SQL更快,而且工作。

0

我做了如下。不知道它是否正确:

using (var dataContext = GetDataContext()) 
{ 
    var invoiceData = from i in dataContext.Invoices 
         where i.InvoiceNumber == paymentData.InvoiceNumber 
         select i; 
    foreach(var invoice in invoiceData) 
    { 
     decimal outPut; 
     if (Decimal.TryParse(paymentData.AmountPaid, out outPut)) 
     { 
      invoice.AmtPaid = invoice.AmtPaid + Convert.ToDecimal(paymentData.AmountPaid); 
     } 
    } 
    dataContext.SubmitChanges(); 
} 
+0

我测试了上面的代码,它工作正常! – user466663