2012-02-23 121 views
1

我有一個多對多的關係如下:LINQ結果匹配的所有關係

產品表:

ProductID 
Description 

產品屬性表:

FeatureID 
ProductID 
FeatureValue 

所有產品可以有許多功能。 我有一個要素類

public class Feature 
{ 
    public Guid FeatureID { get; set; } 
    public string FeatureValue { get; set; } 
} 

和功能列表,來自搜索

List<Feature> searchFeaturesList = new List<Feature>(); 

foreach (string var in Request.QueryString) 
{ 
    searchFeaturesList.Add(new Feature { FeatureID = new Guid(var.ToString()), FeatureValue = Request.QueryString[var] }); 
} 

我怎樣才能匹配所有的特徵ID和特徵值是對所有產品的列表列表使用LINQ to SQL。 我試過使用Contains,但是我得到了與所有功能匹配的所有產品的結果。我需要它來匹配所有的功能。 請注意,每個FeatureID的可以有不同的FeatureValue 謝謝

+1

我們展示你的代碼,你嘗試過使用包含。這可能只是一個需要應用的小變化。 – dtb 2012-02-23 14:17:13

回答

2
var query = Products.AsQueryable(); 

foreach (var feature in searchFeaturesList) 
{ 
    // create here new values of featureId and featureValue otherwise will get the first ones from the iterator 
    var featureId = feature.FeatureID; 
    var featureValue = feature.FeatureValue; 
    // each feature id and value is tested if exists in the ProductFeatures 
    query = query.Where(p=>p.ProductFeatures 
          .Any(pf=> pf.FeatureID == featureId && pf.FeatureValue == featureValue)); 
} 
+1

很好用!謝謝! 我不明白爲什麼你必須創建featureId和featureValue的新值。但是,如果你不像你指出的那樣做,那肯定不行。 – vts 2012-02-23 15:01:17

+0

http://msdn.microsoft.com/en-us/library/bb882641.aspx – 2012-02-23 15:12:39

相關問題