Результаты LINQ, соответствующие ВСЕМ отношениям - PullRequest
1 голос
/ 23 февраля 2012

У меня много-много следующих отношений:

Таблица продуктов:

ProductID 
Description

Таблица ProductFeatures:

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] });
}

Как получить список всех продуктов, которые соответствуют ВСЕМ идентификаторам функций И ​​функцииЗначения в списке с использованием LINQ to SQL.Я пытался использовать Contains, но я получаю результаты всех продуктов, которые соответствуют ЛЮБЫМ функциям.Мне нужно, чтобы соответствовать всем функциям.Обратите внимание, что каждый FeatureID может иметь различное FeatureValue. Спасибо

1 Ответ

2 голосов
/ 23 февраля 2012
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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...