2010-09-17 26 views
6

Bir anket aracı yapıyorum. Ben 2 tablolarım, onları Polls ve PollsCompleted olarak adlandırın. PollsCompleted'de belirli bir kullanıcı için mevcut olmayan tüm anketleri almak için bir linq sorgusu yapmam gerekiyor.Linq-to-sql İçermez veya İçermez?

Aşağıdaki setleri: Anketler için

Nerede Aktif == Gerçek

PollId = Polls.Id

Şimdi almak gerekir nerede KullanıcıNo == ThisUserId PollsCompleted için PollsCompleted'de bulunmayan tüm Anketler. Bunun için tek bir veya birden çok sorgu kullanarak bir örneğe ihtiyacım var. Onu 2 sorguya bölmeyi denedim.

Temel olarak, ben T ve T1 tipi 2 IQueryables ettik. T1.ParentId'de T.ID'nin bulunmadığı tüm T'leri almak istiyorum.

+1

"!" Uygulamasını uygulayabileceğinizi biliyor musunuz? operatörü .Contains()? –

cevap

15
T.Where(x => ! T1.Select(y => y.ParentID).Contains(x.ID)) 

için

sık sık aşağıdan yukarıya doğru çalışır. Burada T1 - T1.Select (...) bölümünde tüm ana-babaların bir koleksiyonunu elde ediyoruz. Ardından, kimlikleri o sette bulunmayan tüm Ts'yi seçen bir cümle oluştururuz.

Sonuç, bir sorgudur. Bunu gerçekleştirmek için, yukarıdaki ifadede ToList() veya benzeri kullanın.

+0

Çok teşekkürler! Bu çalışıyor. –

İlgili konular