C#でLINQに変換する次のSQLステートメントがあります。@amount
変数はC#変数になります。
DECLARE @amount DECIMAL(20,2)
SET @amount = 120.30
UPDATE INVOICES SET AmtPaid = AmtPaid + @amount WHERE InvoiceNum = 'AC0000034550'
C#でLINQに変換する次のSQLステートメントがあります。@amount
変数はC#変数になります。
DECLARE @amount DECIMAL(20,2)
SET @amount = 120.30
UPDATE INVOICES SET AmtPaid = AmtPaid + @amount WHERE InvoiceNum = 'AC0000034550'
LINQではできません 。UPDATE
LINQはクエリSELECT
エンジンであり、 (生のSQLに関して話す場合)に適しています。
さらに、正常に機能するSQLコードがすでにある場合は、それをLINQに変換しても意味がありません。SQLはより高速で、機能します。
なぜlinqで選択してから、リストを繰り返し処理して変数を更新しないのですか?
LINQは更新を行わないため、SQLをLINQに変換することはできません
私は次のようにしました。それが正しいかどうかわからない:
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();
}