После долгих поисков я не смог найти ничего, что бы четко описывало, почему я вижу это поведение (и я предполагаю, что это что-то очень простое, что мне не хватает - я все еще очень начинающий :))
У меня есть метод (RefreshFilter), который принимает объект (rfp) в качестве параметра.У rfp есть свойство с именем 'Items', имеющее тип List.
У меня есть 2 вызова RefreshFilter, которые выглядят так:
rfp = RefreshFilter(rfp, FilteredBy.Category)
rfp = RefreshFilter(rfp, FilteredBy.Industry)
Вот метод RefreshFilter:
public FilterParams RefreshFilterList(FilterParams rfp, FilteredBy filteredBy)
{
using (myEntity context as new myEntity())
{
itemsInCategory = (from i in context.items
join ic in context.ItemsCategories on i.Id equals ic.items.id
where ic.Categories.Id == '52'
select i).ToList<items>();
rfp.Items = rfp.Items.Intersect(itemsInCategory).ToList<items>();
}
return rfp;
}
Первый вызов RefreshFilter (...) работает нормально и возвращает объект FilterParams со свойством .items, который содержит пересеченный список.
Второй вызов RefreshFilter (...) всегда возвращает объект FilterParams со свойством .items, содержащим список 0 элементов (что не ожидается, поскольку я знаю, что в списках есть совпадающие элементы).
После некоторого тестирования, я думаю, я смог сузить это до связи с контекстом, в котором установлен rfp.Items. Однако у меня всегда было впечатление, что правильный способ делиться коллекциями между контекстами - это выбирать их всобирать объекты и передавать их, но кажется, что эти объекты каким-то образом связаны с их начальным контекстом.
Спасибо,