Zufällige Zeilenabnahme mit bedingter Filterung in LINQ zu SQL
Muss eine zufällige Datenbankzeile abrufen, die bestimmte Kriterien mit LINQ zu SQL erfüllt? Dies ist besonders hilfreich, wenn der spezifische Datensatz nicht kritisch ist, aber die damit verbundenen Bedingungen sind. Beispielsweise wählen Sie einen zufälligen aktiven Kunden.
Die effektivste Methode beinhaltet eine "Dummy" -Nutzerfunktion (UDF) in der Datenbank.
Erstellen Sie in einer Teilklasse für Ihren Datenkontext eine solche Funktion:
<code class="language-csharp">partial class MyDataContext { [Function(Name="NEWID", IsComposable=true)] public Guid Random() { throw new NotImplementedException(); } }</code>
Diese Funktion wirkt als Marker für die Datenbank; Ihr C# -Code wird es nicht direkt anrufen. Es signalisiert die Verwendung der zufälligen Funktion der Datenbank.
Verwenden Sie die UDF in Ihrem Linq, um die SQL -Abfrage zu bestellen, um die Zeilen, die Ihren Bedingungen entsprechen, zufällig zu bestellen. Beispiel:
<code class="language-csharp">var cust = (from row in ctx.Customers where row.IsActive // Your filter condition orderby ctx.Random() select row).FirstOrDefault();</code>
Die OrderBy
-Klausel verwendet ctx.Random()
, um Zeilen basierend auf der Funktion der Datenbank basierend zu bestellen. Das Ergebnis ist eine zufällige Zeile, die NEWID()
. row.IsActive
erfüllt
Skip
, um die spezifische Zeile abzurufen. First
Das obige ist der detaillierte Inhalt vonWie erhalte ich mit LINQ to SQL eine zufällige Zeile, die bestimmte Kriterien erfüllt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!