Questione : Che cosa è il senso più veloce fare in cui domanda in linq2sql

Ho una tabella di base di dati contenere molti cento di migliaia di file e sono prova per ottenere quelle file di cui di identificazione con quelle di un altro sottoinsieme di parecchie migliaia di ID's.

I fiammifero un IQueryable che restituisce le file ed allora sto facendo un linq prescelto come segue: class= " lineNumbers " >
1 del >

unitIDs della stringa [] = {AAAAAAA ", “AAAAAAB„};

unitEvents di varietà = systemRepository.GetUnitEvents ();

la varietà abbina = dalla a nei unitEvents
			  dalla b nei unitIDs
			  dove == b di a.UnitID
			  selezionare nuovo {a, b};

conteggio = fiammiferi di int. Conteggio (); class= >

di

Although gli impianti di cui sopra, può richiedergli parecchi secondi affinchè rifinisca i fiammiferi. Dichiarazione di conteggio (). Se faccio una simile dichiarazione di SQL direttamente via SQL rinvia in di meno che un secondo. e.g.

select * da unit_event dove il unitid (“AAAAAAA„, “AAAAAAB„) nel

I non sperimentato con Linq/Sql ed ha voluto sapere se stia usando il migliore method.

Perhaps che dovrei redigo una procedura immagazzinata per mantenerlo tutta nella base di dati?

Many thanks
class= del

Risposta : Che cosa è il senso più veloce fare in cui domanda in linq2sql

Ciao Petroclus;

Per per fare a nella clausola nel primo rilascio che E-F dovrete caricare programmi oggetto il LinqKit che è libero di usare che svilupperà un attributo in moda da poterlo utilizzare esso nella domanda.

Caricare programmi oggetto LinqKit di qui alla parte inferiore del ==> http://www.albahari.com/nutshell/linqkit.aspx della pagina
Aprire la chiusura lampo della lima ed aprire la soluzione in studio visivo e regolare la soluzione al rilascio.
Compilare la soluzione. Se nessun errore chiude la soluzione.
Ora nel vostro progetto in corso aggiungere un riferimento al LinqKit.dll che sarà nell'indice rilascio/dello scomparto del progetto LinqKit.
Aggiungere la dichiarazione usando al vostro ==> di progetto using LinqKit;
La funzione e la domanda sotto dovrebbero funzionare non.

Il seguente collegamento è Info su LinqKet.
Attributi dinamicamente componenti di espressione
http://www.albahari.com/nutshell/predicatebuilder.aspx

Fernando
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
IEnumerable pubblico GetUnitEventsWhereUnitIDIn (unitIDs della stringa [])
{
    attributo di varietà = PredicateBuilder.False ();
    foreach (unitID della stringa nei unitIDs)
    {
        stringa identificazione = unitID;
        attributo = attributo. O (=> I.UnitID.Contains (identificazione) di I);
    }

    db.UnitEvents.AsExpandable di ritorno (). Dove (attributo);
}
Altre soluzioni  
 
programming4us programming4us