我在C#中将以下SQL语句转换为LINQ。 @amount
变量将是C#变量。
DECLARE @amount DECIMAL(20,2)
SET @amount = 120.30
UPDATE INVOICES SET AmtPaid = AmtPaid + @amount WHERE InvoiceNum = 'AC0000034550'
答案 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();
}