Vraag : Wat de snelste manier is om te doen waarin vraag in linq2sql

Ik heb een gegevensbestandlijst die vele honderd van duizenden rijen bevatten en ik ben poging om die rijen te krijgen de waarvan gelijke van identiteitskaart met die van een andere ondergroep van verscheidene duizenden van ID's.

I een IQueryable hebben die de rijen terugkeert en dan doe ik als volgt een uitgezochte linq:

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

var unitEvents = systemRepository.GetUnitEvents ();

var past = van a in unitEvents aan
			  van B in unitIDs
			  waar a.UnitID == B
			  selecteer nieuw {a, B};

int. telling = gelijken. Telling (); 


(het bovengenoemde voorbeeld past slechts 2 unitID aan maar dit zou vele duizenden kunnen zijn).

Although de bovengenoemde werkzaamheden, het verscheidene seconden voor het kunnen vergen om de gelijken te beëindigen. Van de telling () de verklaring. Als ik direct een gelijkaardige SQL verklaring via SQL doe keert het in een minder dan seconde terug. e.g.

select * van unit_event waar unitid in („AAAAAAA“, „AAAAAAB“)

I am niet met Linq/Sql wordt en wordt gewild ervaren die om weten of gebruik ik beste method.

Perhaps ik een opgeslagen procedure zou moeten schrijven om het allen in het gegevensbestand te houden dat?

Many thanks

Antwoord : Wat de snelste manier is om te doen waarin vraag in linq2sql

Hallo Petroclus;

om a IN clausule in de versie van EF te doen eerste zult u LinqKit moeten downloaden die vrij is te gebruiken wat een predikaat zal bouwen zodat het in de vraag kan worden gebruikt.

Download LinqKit van hier bij de bodem van pagina ==> http://www.albahari.com/nutshell/linqkit.aspx
Rits het dossier open en open de oplossing in Visuele Studio en reeks de Oplossing voor Versie.
Compileer de oplossing. Als geen fouten de oplossing sluiten.
Nu in uw huidig project voeg een verwijzing naar LinqKit.dll toe die in de bak/versiefolder van project LinqKit zal zijn.
Voeg de gebruikende verklaring aan uw project ==> gebruikend toe LinqKit;
De onderstaande functie en de vraag zouden moeten werken niet.

De volgende verbinding is info op LinqKet.
Dynamisch Samenstellend de Predikaten van de Uitdrukking
http://www.albahari.com/nutshell/predicatebuilder.aspx

Fernando
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
openbare IEnumerable GetUnitEventsWhereUnitIDIn (koord [] unitIDs)
{
    var predikaat = PredicateBuilder.False ();
    foreach (koord unitID in unitIDs)
    {
        koord identiteitskaart = unitID;
        predikaat = predikaat. Of (I => I.UnitID.Contains (identiteitskaart));
    }

    terugkeer db.UnitEvents.AsExpandable (). Waar (predikaat);
}
Andere oplossingen  
 
programming4us programming4us