どーも最近、ダメな子扱いされがちな LINQ to SQL ですが、クエリ結果を(ほぼ)透過的にキャッシュすることで実行速度を約3倍に加速してみました。 使い方はひじょーにカンタン。 通常 var connectionString = Properties.Settings.Default.Database1ConnectionString; using (var db = new DataClasses1DataContext(connectionString)) { var array = db.Products.Where(__ => __.Price > 500).OrderBy(_ => _.Price).Take(200).ToArray(); } みたいに書くところを var connectionString = Properties.Settings.Default.Dat
この記事の次の例では、この分野の一般的なデータ ソースが使用されています。 public enum GradeLevel { FirstYear = 1, SecondYear, ThirdYear, FourthYear }; public class Student { public required string FirstName { get; init; } public required string LastName { get; init; } public required int ID { get; init; } public required GradeLevel Year { get; init; } public required List<int> Scores { get; init; } public required int DepartmentID {
概要 LINQ to SQL で使われる Table クラスなどは IQueryable と IQueryProvider インターフェースを実装しています。 これら IQueryable および IQueryProvider は、 LINQ クエリ式から「式木」を構築する。 構築した式木を解釈して、独自のクエリ処理を行う。 というような機能を提供するインターフェースです。 一度、式木(実行可能コードではなくて、プログラム中で読めるデータ)になるので、 IQueryable の実装次第で様々な機能を提供することができます。 となると当然、IQueryable を実装して、独自の LINQ プロバイダを作成したいとき、 クエリ式 → 式木の構築手順 式木を独自に処理 の2つのことを理解しておく必要があります。 後者は要するに、式木に関する理解があればできることです。 なので、ここでは、前者の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く