Ich habe eine Tabelle mit einer "WAV" -Spalte vom Typ "VARBINARY (max)" (speichert eine WAV-Datei) und würde gerne überprüfen können, ob es eine WAV von LINQ nach SQL gibt.Wie man Linq zu SQL in eine abgeleitete Spalte übersetzt?
Mein erster Ansatz war die folgende in Linq zu tun:
var result = from row in dc.Table
select new { NoWav = row.Wav != null };
Das Problem mit dem Code oben ist, wird es die ganze binäre Inhalt retreive auf RAM, und das ist nicht gut (langsam und Speicher hungrig).
Haben Sie eine Idee, wie Linq Query in etwas wie Balg in SQL zu übersetzen?
SELECT (CASE WHEN Wav IS NULL THEN 1 ELSE 0 END) As NoWav FROM [Update]
Die "Wav" -Eigenschaft in meinem DBML ist so eingestellt, dass das Laden verzögert wird, würde dies das seltsame Verhalten erklären? – bounav
Durchlaufen Sie Ihre Anweisung in einem Debugger und verfolgen Sie die tatsächlichen ausgegebenen SQL-Anweisungen. Nur so kannst du deine Frage definitiv beantworten :) Die untenstehenden Antworten von bruno und ich weisen darauf hin, dass es dein BLOB nicht bringt. Der Grund, warum es langsam ist, mag nichts damit zu tun haben, dass Binärdaten in den RAM übertragen werden - fügen Sie einige Trace- und Stoppuhranweisungen hinzu, um die langsamen Teile zu finden, und sql profiler, um die Abfragen zu finden –