2016-08-23 5 views
1

Ich bin neu zu Linq zu SQL und ich habe einige komplexe SQL-Abfrage.Komplexe SQL Server-Abfrage zu LINQ to SQL-Abfrage C#

Meine SQL Server-Abfrage führt dies in Kürze: Ich habe 2 Tabellen, Produkt (a) und Produktreihenfolge (b). Das Produkt hat einen Betrag und eine zweite Menge, die den Kunden warnt, wie viele Artikel noch in Bearbeitung sind.

In "a" haben wir 10 Papiere, wenn wir 5. Dann Tabelle ein zweiter Betragswert 5. ist dann bestellen, wenn wir mehr bestellen: 5 = 5 + mehr

Also ich meinen T-SQL hier schreiben. Ich möchte ein Linq

UPDATE a 
SET a.secondamount = a.secondamount + b.orderedamount 
INNER JOIN b ON a.productid == b.productid 
WHERE b.status = false ; 
+0

Sie schreiben bereits eine SQL-Abfrage. Möchten Sie dies in LINQ übersetzen? –

+0

Ja, dieses Code-Snippet, was ich in meinem alten Programm verwendet habe. Im Moment muss ich jeden sqlcommand/reader etc zu linq to sql ersetzen. Ich habe fast alles ersetzt, was ich mit diesem hier steckte. – bencemik95

Antwort

1

Linq verwendet wird, nicht für die Aktualisierung auf SQL aber für Abfrage. Sie können linq verwenden, um alle Datensätze zu finden, die Sie aktualisieren und die Daten vorbereiten möchten, aber dann sollte das Update selbst separat erfolgen.

var result = from itemA in a 
      join itemB in b on itemA.productId equals itemB.productId 
      where itemB.Status == false 
      select new { itemA, itemB.orderedamount }; 

foreach(var item in result) 
{ 
    //do update using item.itemA.secondAmount + item.orderedamount 
} 
+0

Gilad, sorry, versuchte deine Anfrage kompilierbar zu machen und führte einen weiteren dummen Fehler ein. –

+0

Ich meinte, ich habe deine Antwort mit meinem ersten Schnitt gebrochen, also entschuldige ich mich dafür. –

+0

@IvanStoev - ahh ok du hast es. Das "Gleiche" war nur ein dummer Fehler :) haha. Über die 'Join' im Vergleich zu der' Where' - ich weiß, dass 'Join' die richtige ist in Bezug auf die ursprüngliche sql, aber was passiert, wenn diese Verbindung mehr als einen Datensatz ergibt? .. deshalb habe ich es geändert zu der 'Any' –