将此SQL转换为LINQ

时间:2012-08-25 21:33:12

标签: c# sql linq sql-to-linq-conversion

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

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

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

4 个答案:

答案 0 :(得分:3)

不能 UPDATE使用LINQ。

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

另外,如果你已经拥有了良好的SQL代码,转换为LINQ是没有意义的; SQL更快,更有效。

答案 1 :(得分:0)

LINQ不进行更新,因此您无法将SQL转换为LINQ

答案 2 :(得分:0)

为什么不用linq进行选择然后遍历列表并更新变量??

答案 3 :(得分: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();
}