У меня есть три таблицы Tbl_Listings, Tbl_AttributesLU и Tbl_ListingAttributes.
Tbl_Listings содержит все мои списки.
Tbl_AttributesLU содержит ряд атрибутов (имя с идентификатором)
Tbl_ListingAttributes содержит несколько атрибутов для каждого списка.
Я хочу, чтобы пользователи моего сайта могли выполнять поиск по спискам, но при этом можно сузить поиск по атрибутам, прикрепленным к каждому списку.
Для этого я сначала отправляю все атрибуты, выбранные пользователем, в мою ViewModel в виде списка, называемого AttributesFromView.
Затем я получаю все свои списки и помещаю их в коллекцию IEnumarable, называемую ListingsInDB.
Затем я создаю цикл foreach, пытаясь сузить список на основе каждого атрибута в AttributesFromView. Ниже приведен код.
IEnumerable<Listing> ListingsInDB = from x in DBEntities.Tbl_ListingSet select x;
foreach (int Attribute in AttributesFromView)
{
ListingsInDB = (from x in ListingsInDB
from a in x.Tbl_ListingAttributes
where a.Tbl_AttributesLU.ID == Attribute
select x);
}
Теперь, поскольку моя коллекция ListingsInDB находится за пределами цикла foreach, я предполагаю, что на каждой итерации цикла foreach она должна сужать коллекцию, выбирая только списки с конкретными прикрепленными атрибутами. Таким образом, на первой итерации он будет выбирать все списки, которые имеют AttributesFromView [0]. Затем (на следующей итерации) из этой недавно обновленной коллекции ListingsInDB он выберет все дальнейшие списки, имеющие AttributesFromView [1] и т. Д. ...
Это, однако, не работает. Вместо этого он всегда будет выбирать элементы с последним атрибутом в списке AttributesFromView. Я немного смущен тем, почему это происходит, и буду очень признателен за помощь в решении проблемы.
Кроме того, извинения за то, что название очень расплывчато - я действительно не знал, как сформулировать этот вопрос.
Заранее спасибо,
Sheefy