C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

LINQ でインデックスを指定する

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■82976 / inTopicNo.1)  LINQ でインデックスを指定する
  
□投稿者/ 田中 (1回)-(2017/02/23(Thu) 20:46:13)

分類:[.NET 全般] 

LINQ to EntityFramework でテーブルのレコードを検索する際に、インデックスを指定することは可能でしょうか。

例えば、HogeCode フィールドをインデックスとする HogeIndex があるとき、

var q = db.Tables.With(x => x.UseIndex = "HogeIndex").First(x => x.HogeCode);

のような書き方ができたら便利かと思ったのですが、そのようなメソッドが見つかりませんでした。

もし記述できないなら、皆さんはどのようにインデックスを指定して EntityFramework からレコードにアクセスしているのかご教示いただければ幸いです。
引用返信 編集キー/
■82978 / inTopicNo.2)  Re[1]: LINQ でインデックスを指定する
□投稿者/ eden (1回)-(2017/02/24(Fri) 10:26:40)
No82976 (田中 さん) に返信
> LINQ to EntityFramework でテーブルのレコードを検索する際に、インデックスを指定することは可能でしょうか。
>
> 例えば、HogeCode フィールドをインデックスとする HogeIndex があるとき、
>
> var q = db.Tables.With(x => x.UseIndex = "HogeIndex").First(x => x.HogeCode);
>
> のような書き方ができたら便利かと思ったのですが、そのようなメソッドが見つかりませんでした。
>
> もし記述できないなら、皆さんはどのようにインデックスを指定して EntityFramework からレコードにアクセスしているのかご教示いただければ幸いです。

var q = db.Tables.Where(x => x.UseIndex = "HogeIndex").First(x => x.HogeCode);
これでいけませんか?
引用返信 編集キー/
■82986 / inTopicNo.3)  Re[2]: LINQ でインデックスを指定する
□投稿者/ 田中 (2回)-(2017/02/24(Fri) 15:24:53)
サンプルが間違っていました。
以下が正しい内容です。

var q = db.Tables.With(x => x.UseIndex = "HogeIndex").First(x => x.HogeCode == 1);

これは、次のような場合を想定しています。

public class Hoge {
[Key] public int Id { get; set; }
[Index("HogeIndex")] public int HogeCode { get; set; }
public int Price { get; set; }
}

このクラスからテーブルを生成した場合、HogeCode の値が「1」のレコードを読み出す際に、HogeIndexインデックスを使用した方が高速に結果を得られると思います。
しかし、LINQ to Entities では使用するインデックスを指定できるのかどうかがわからず、また、もし使用できるならどのように指定するのかについてご存知の方がいたらご教示願いたいということです。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ