2011-10-25 31 views
11

dizisi (veya liste) birçok Bulinq bir veya değerlerin

var orx = gg.Where(x=>x.ProductAttributes.Any (pa =>pa.AttributeId == "home")); 
ürün özelliklerini

döner gg bir değere sahip görünüyor "ev"

I ürünü bir diziden öznitelik değerleri nerede ve gg dönmek gerek yani

var orx = gg.Where(x=>x.ProductAttributes.Any (pa =>pa.AttributeId in "home,work")); 
+0

olası yinelenen [Linq Varlıklar - Sql "IN" yan tümcesi) (http://stackoverflow.com/questions/857973/linq-to-entities-sql-in-clause) – jrummell

cevap

21

peki ya ...

Listeniz sizin örneğiniz kadar güvenilirse,

veya "home,work".Contains(pa.AttributeId) çalışmalıdır.

+0

'" ev, iş ".Contains (pa.AttributeId)' Özniteliklerin herhangi biri "home" veya "work" kelimelerinin bir parçası olacaksa yanlış sonuç döndürürse, örneğin ork '... – sll

+0

Sll: Evet, bu yüzden dedim ki "eğer listeniz sizin örneğiniz kadar güvenilirse " – musefan

+1

Eksik olduğum sözdizimdi, geri aldım – jason

4

Enumerable.Contains() Kullanma (o Attributeıd liste kelimelerin herhangi bir alt dize olmayacaktır sağlayabilirsiniz sürece hiçbir ortalama tarafından böyle "ben" olarak .. bu tavsiye): ait

var orx = gg.Where(x => x.ProductAttributes 
         .Any(pa => 
          array.Containspa(pa.AttributeId)); 

var orx = gg.Where(x => x.ProductAttributes 
         .Any(pa => 
          "home, work".Split(',').Contains(pa.AttributeId));