2017-06-26 7 views
0

私のプログラムでは、私は検索方法があります。C#Linqが含まれていて、グループ化され、順序が

  1. 第1版、私は通常のように私のデータベース内の図面番号で図面を検索: は、私はそれの2つのバージョンがあります。
  2. 2番目のバージョンは、通常の検索とデータベース内のこの図面番号を持つ最新のオブジェクトのみを検索する機能です。

どちらのオプションについても、私はCONTAINSメソッドを使用しています。

通常の検索では正常に動作しますが、最新の検索ではGROUP BYORDER BYと組み合わせていますが、多くのオブジェクトが欠落しているように感じます。
CONTAINSが動作する必要がないように、図面番号全体を使用するときにチェックしました。

たとえば、図面番号に100を書き、通常の検索を使用すると、100 - Thatsの罰金を持つすべてのオブジェクトが検索されます。
、最新のオブジェクトを100個だけ検索すると、ほんのわずかしか見つかりません。

検索に整数を使用すると、正しい番号の最新のオブジェクトが検索されます。
CONTAINSは、すべての並べ替えと注文のものを使っていると悪いですか、それとも何か不足していますか?

理解を容易にするために、図面番号には異なる拡張子とdoktypeがあります。 Dok_Countは、私が探している最新の文書の数です。

var query = 
         from z in context.zeichnungs 
         where (zeichnungsnummer == "" || z.Zeichnungsnummer.Contains(zeichnungsnummer)) && 
         (index == "" || index == z.Index) && 
         (artikelbezeichnung == "" || artikelbezeichnung == z.Artikelbezeichnung) && 
         (status == "" || status == z.Status) && (mmsSachmerkmal == "" || mmsSachmerkmal == z.MMS_Sachmerkmal) && 
         (doktyp == "" || doktyp == z.Dokumententyp) && (dateiendung == "" || dateiendung == z.Dateiendung) && 
         (z.Datum >= startDate.Date && z.Datum <= endDate.Date) && (status == "" || status == z.Status) 
         select z; 
         var sortQuery = query.GroupBy(x => new { x.Dokumententyp, x.Dateiendung }).Select(g => g.OrderByDescending(record => record.Dok_Count).FirstOrDefault()); 

答えて

-1

データサーバーは、.netクラスよりも優れたパフォーマンスでこれを行うと思います。さて、私は、SQLプロファイル(またはトレース)を実行して、プロセスがデータベースに要求するコマンドをキャッチすることができると思います。これを行うには、データベースの結合のように、より良いでしょう。一方、このクエリを返すレコードの数が1000未満にならない場合でも、これは良い方法です。私の英語のため申し訳ありません

:あなたは、LINQを使用してデータベースの通常の仕事をしようとしているD

+0

私は1000を超えるレコードを意味します。 –

+0

の下にはありません。データベースには、現在約7000のエントリがあります。 WHERE((((((gp1 = @ p__linq__0)OR( 'Extent1'.Zeichnungsnummer' LIKE @ p__linq__1))を含む選択文字列です。 – Only3lue

0

これは、それがビューを使用し、pourpose投票のおかげではありません。

関連する問題