ホームページ > バックエンド開発 > C++ > LINQ to SQLを使用して特定の基準を満たすランダムな行を取得するにはどうすればよいですか?

LINQ to SQLを使用して特定の基準を満たすランダムな行を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-26 16:02:09
オリジナル
808 人が閲覧しました

How to Get a Random Row Meeting Specific Criteria Using LINQ to SQL?

linqに条件付きフィルタリングを備えたランダムな行の検索 LINQからSQLを使用して特定の基準を満たすランダムデータベース行を取得する必要がありますか? これは、特定のレコードが重要ではない場合に特に役立ちますが、それに関連する条件はそうです。 たとえば、ランダムなアクティブな顧客を選択します。

最も効果的な方法には、データベース内の「ダミー」ユーザー定義関数(UDF)が含まれます。

UDFの定義

  1. データコンテキストの部分クラスでは、次のような関数を作成します。
この関数は、データベースのマーカーとして機能します。 C#コードは直接呼び出されません。 データベースのランダム関数の使用を通知します

partial class MyDataContext {
     [Function(Name="NEWID", IsComposable=true)] 
     public Guid Random() 
     { 
         throw new NotImplementedException(); 
     }
}
ログイン後にコピー
linqクエリへの統合:

  1. linqからSQLクエリのUDFを使用して、条件に一致する行をランダムに注文します。 例:
句は

を使用して、データベースの関数に基づいて行をランダムに並べ替えます。 結果は、満足のいくランダムな行が

var cust = (from row in ctx.Customers
           where row.IsActive // Your filter condition
           orderby ctx.Random()
           select row).FirstOrDefault();
ログイン後にコピー
です

OrderByctx.Random()パフォーマンスに関する重要なメモ:NEWID()row.IsActive

    この方法は、小規模から中型のテーブルに最適です。 非常に大きなテーブルの場合、サーバー側のオーバーヘッドは重要かもしれません。 このようなシナリオでは、より効率的です:
  1. 一致する行の総数をカウントします
  2. そのカウント内でランダムインデックスを生成します。

特定の行を取得するには、

および
    を使用します。

以上がLINQ to SQLを使用して特定の基準を満たすランダムな行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート