0

C#でLINQに変換する次のSQLステートメントがあります。@amount変数はC#変数になります。

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

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

4 に答える 4

3

LINQではできませんUPDATE

LINQはクエリSELECTエンジンであり、 (生のSQLに関して話す場合)に適しています。

さらに、正常に機能するSQLコードがすでにある場合は、それをLINQに変換しても意味がありません。SQLはより高速で、機能します。

于 2012-08-25T21:35:14.823 に答える
0

なぜlinqで選択してから、リストを繰り返し処理して変数を更新しないのですか?

于 2012-08-25T21:40:13.520 に答える
0

LINQは更新を行わないため、SQLをLINQに変換することはできません

于 2012-08-25T21:35:11.643 に答える
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 に答える