Frage : Was die schnellste Weise ist, zu tun worin Frage in linq2sql

Ich habe eine Datenbanktabelle, viele hundert von Tausenden Reihen zu enthalten und ich bin der Versuch, zum jener Reihen zu erhalten, deren Identifikation-Gleichem mit denen einer anderen Teilmenge einiger Tausenden ID's.

I ein IQueryable haben, das die Reihen zurückbringt und dann tue ich ein linq, das auserwählt ist, wie folgt:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Schnur [] unitIDs = {AAAAAAA ", „AAAAAAB“};

var unitEvents = systemRepository.GetUnitEvents ();

var zusammenpaßt = von a in den unitEvents passt
			  von b in den unitIDs
			  wo a.UnitID == b
			  neues vorwählen {a, b};

int-Zählimpuls = Gleiche. Zählimpuls (); 


(das oben genannte Beispiel nur Gleiche 2 der unitIDs aber dieses könnte viele Tausenden sein).

Although die oben genannten Arbeiten, kann es einige Sekunden nehmen, damit es die Gleichen beendet. Aussage des Zählimpulses (). Wenn ich eine ähnliche SQL-Aussage direkt über SQL tue, zurückgeht es in kleiner als eine Sekunde r. e.g.

select * von unit_event wo wollte unitid („AAAAAAA“, „AAAAAAB“) im

I morgens erfahren nicht mit Linq/Sql und wissen, wenn ich das beste method.

Perhaps verwende, das ich sollte ein gespeichertes Verfahren schreibe, um es allen in der Datenbank zu halten?

Many thanks

Antwort : Was die schnellste Weise ist, zu tun worin Frage in linq2sql

Hallo Petroclus;

Zwecks a in der Klausel in der E-Fersten Freigabe tun, die Sie das LinqKit herunterladen müssen, das frei ist zu verwenden, das ein Prädikat aufbaut, damit es in der Frage verwendet werden kann.

LinqKit von hier an der Unterseite von Seite ==> http://www.albahari.com/nutshell/linqkit.aspx herunterladen
Die Akte öffnen und die Lösung im Sichtstudio öffnen und die Lösung auf Freigabe einstellen.
Die Lösung kompilieren. Wenn keine Störungen die Lösung schließen.
Jetzt in Ihrem gegenwärtigen Projekt einen Hinweis auf dem LinqKit.dll hinzufügen, das im Sortierfach-/Freigabeverzeichnis des LinqKit Projektes ist.
Die verwendenaussage Ihrem Projekt ==> using LinqKit hinzufügen;
Die below Funktion und die Frage sollten arbeiten nicht.

Die folgende Verbindung ist Info auf LinqKet.
Dynamisch bestehende Ausdruck-Prädikate
http://www.albahari.com/nutshell/predicatebuilder.aspx

Fernando
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
allgemeines IEnumerable GetUnitEventsWhereUnitIDIn (Schnur [] unitIDs)
{
    var-Prädikat = PredicateBuilder.False ();
    foreach (Schnur unitID in den unitIDs)
    {
        Schnur Identifikation = unitID;
        Prädikat = Prädikat. Oder (I => I.UnitID.Contains (Identifikation));
    }

    Rückholdb.UnitEvents.AsExpandable (). Wo (Prädikat);
}
Weitere Lösungen  
 
programming4us programming4us