2010-03-29 6 views
8

Ich habe ein Objekt (Produkt), mit einer Eigenschaft des Typs 'Array'
z. product.tags = {"tag1", "tag2", "tag9"}LINQ - Array-Eigenschaft enthält Element aus einem anderen Array

Ich habe ein Array von Eingabe-Tags zum Filtern.

... aber das ist nicht ganz Arbeiten:

List<string> filterTags = new List<string>() { "tag1", "tag3" }; 

var matches = from p in products 
    where p.Tags.Contains(filterTags) 
    select p; 

Alle Empfehlungen? Danke.

Antwort

19

Was soll die Contains wirklich erreichen? Müssen alle Artikel in Tags in filterTags existieren? Oder zumindest einer von ihnen? Für letztere verwenden Sie Any und für die ehemalige Verwendung All. Ihre where Linie würde sich ändern zu:

where p.Tags.Any(tag => filterTags.Contains(tag)) 

oder

where p.Tags.All(tag => filterTags.Contains(tag)) 
+0

Dank ... great. Es bedeutete eigentlich "irgendwas". .... "... zeigen Sie alle Produkte an, die ein oder mehrere Eingabe-Tags enthalten". Ich werde es versuchen. DANKE! – Rob

+0

Als LINQ für alle Interessierten: 'context.Products.Where (p => p.Tags.Any (tag => filterTags.Contains (tag)))' –

Verwandte Themen