Avatar billede milandt Nybegynder
03. februar 2008 - 17:46 Der er 5 kommentarer og
1 løsning

LINQ where contains spørgsmål

Jeg har en collection af billed objekter. Disse billeder har alle nogle "tags" om man vil, som er repræsenteret som en collection af tags som en property for hvert billed objekt.

Jeg ønsker at udvælge en mængde ud af denne billed collection ud fra et søgekriterie som består af udvalgte "tags".

Dvs noget i retning af

for each billede in billedObjekter
for each tag in searchTags
  if billede.tags.contains(tag)
  addToResult(billede)

Ovenstående er meget tungt når man skal loope igennem mange tusinde billed objekter, og jeg kunne godt tænke mig at forsøge noget tilsvarende i et LINQ expression, men kan ikke se hvordan det kan stilles op..

forestiller mig noget lignende

from b in billedObjekter
where b.tags.ContainsOneOfMoreOf(searchTags) // mangler så lige en metoder der hedder ContainsOneOfMoreOf :o)
select b

nogle forslag?
Avatar billede hmortensen Nybegynder
03. februar 2008 - 18:48 #1
Måske sådan her:
where b.tags.Any(t => searchTags.Contains(t))
Avatar billede milandt Nybegynder
03. februar 2008 - 19:08 #2
selvfølgelig :D takes some getting used to.

læg et svar :) og tak for hjælpen
Avatar billede hmortensen Nybegynder
03. februar 2008 - 19:09 #3
Det var så lidt :)
Avatar billede milandt Nybegynder
03. februar 2008 - 19:10 #4
noget andet er at det så ikke hjalp på performance :P
Avatar billede hmortensen Nybegynder
03. februar 2008 - 19:12 #5
Det er jo stadig det samme som skal gennemløbes.
Avatar billede nielle Nybegynder
03. februar 2008 - 19:20 #6
Du kan jo prøve denne her:

            var billedSearch = (from b in billedObjekter
                              from bt in b.tags
                              join st in searchTags on bt equals st
                              select b).Distinct();

- men jeg tvivler på at den performer meget bedre - hvis overhovedet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester