Этот запрос:
this.articles = from a in KB.Articles
join t in KB.Teams on a.primary_team_id equals t.id
join cat in KB.Categories on a.category_id equals cat.id
join scat in KB.SubCategories on a.subcategory_id equals scat.id
join top in KB.Topics on a.topic_id equals top.id
select new {
a.id,
a.title,
a.view_count,
a.created_at,
a.created_by,
a.primary_team_id,
primary_team_name = t.name,
category_id = cat.id,
category_name = cat.name,
subcategory_id = scat.id,
subcategory_name = scat.name,
topic_id = top.id,
topic_name = top.name
};
Не будет работать так, поскольку возвращает анонимный тип.В результате вы должны будете ввести его как var
, что недопустимо для членов класса;Вы можете использовать var только для локальных переменных.
Вам нужно создать реальный класс для хранения вашей проекции и получить что-то вроде:
...
join top in KB.Topics on a.topic_id equals top.id
select new LocalDTO()
{
id = a.id,
...
};
Оттуда вы можете просто получить:
private void UpdateFilter()
{
if (this.categoryId > 0)
this.articles = this.articles.Where(a => art.category_id);
}
И, конечно, this.articles будет объявлен как IQueryable<LocalDTO>
.