2013-02-04 16 views
7

kullanarak SQL veritabanından hariç alın ben associatedProducts.ProductsTüm Varlık Framework

mevcut ben dışındaki ürünlerden tüm unsurları almak istiyorum, bir varlık olarak adlandırılan ürünler bu

var r = db.Products.Where(x => x.Sites 
           .Where(z => z.Key == associatedProducts.Key) 
           .Any() 
       ).ToList() 

gibi Ürünlerin listesini Orada var

Bunu nasıl yapabilirim?

+0

İlişkili ürün oluşturma ile ilgili kodu gösterebilir misiniz? – daryal

cevap

14

aşağıdaki sorgu çalışır. associatedProducts EF kullanılarak getirilir henüz bir listesi ise,

var temp = db.Products.ToList().Except(associatedProducts).ToList(); 

aksi halde, (Key varsayarak bir tam sayı olduğu);

List<int> tempIdList = associatedProducts.Select(q => q.Key).ToList(); 
var temp = db.Products.Where(q => !tempIdList.Contains(q.Key)); 
+0

İkinci seçenek işe yaradı! Teşekkür ederiz –

+0

@MohamedNaguib işe yaradı. – daryal

-3

Hariç tutmak istediğiniz ürünlerin listesini yükleyebilir ve ardından tüm ürünler listesinden .Exclude() yazabilirsiniz.

+2

-1 'Exclude' hiçbir yerde tanımlı bulunamadı. –

0
  var query = from p in db.Products 
         where !(from a in associatedProducts.Products 
           select a.Products) 
           .Contains(p.Key) 
         select p; 

Ben sorguyu test etmedi ama bu gibi görünmelidir.

Sen linq içinde "değil de" nasıl kullanabileceğinizi bir göz sahip olmalıdır: associatedProducts listesi previos sorguda EF kullanılarak getirilir ise
How would you do a "not in" query with LINQ?