私のプログラムでは、私は検索方法があります。C#Linqが含まれていて、グループ化され、順序が
- 第1版、私は通常のように私のデータベース内の図面番号で図面を検索: は、私はそれの2つのバージョンがあります。
- 2番目のバージョンは、通常の検索とデータベース内のこの図面番号を持つ最新のオブジェクトのみを検索する機能です。
どちらのオプションについても、私はCONTAINS
メソッドを使用しています。
通常の検索では正常に動作しますが、最新の検索ではGROUP BY
とORDER 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());
私は1000を超えるレコードを意味します。 –
の下にはありません。データベースには、現在約7000のエントリがあります。 WHERE((((((gp1 = @ p__linq__0)OR( 'Extent1'.Zeichnungsnummer' LIKE @ p__linq__1))を含む選択文字列です。 – Only3lue