0

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

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

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

4 回答 4

3

不能 UPDATE使用 LINQ。

LINQ 是一个查询引擎,适用于SELECT(如果我们用原始 SQL 的话)。

另外,如果您已经有良好的工作 SQL 代码,那么将其转换为 LINQ没有任何意义;SQL 更快,并且可以工作。

于 2012-08-25T21:35:14.823 回答
0

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

于 2012-08-25T21:35:11.643 回答
0

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

于 2012-08-25T21:40:13.520 回答
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();
}
于 2012-08-25T22:22:49.833 回答