Использование предложения LINQ Where для фильтрации по данным в связанной таблице - PullRequest
0 голосов
/ 07 июня 2011

У меня есть две таблицы, Статьи и Статусы, которые я связал в файле ctx.dbml.

Articles
id:int
title:varchar(255)
status_id:int

Statuses
id:int
name:varchar(255)

Что я хотел бы сделать, так это отфильтровать все статьи определенного статуса. Гипотетически говоря, что-то вроде:

var filteredArticles = from article in ctx.Articles
                       where article.Status.name == "Active"
                       select article;

Проблема, с которой я столкнулся, заключается в том, что в приведенном выше запросе linq, вторая строка, Intellisense никогда не дает мне article.Status.name . Я видел такой код в интернете, так что я, должно быть, что-то упустил. Пожалуйста, помогите.

1 Ответ

4 голосов
/ 07 июня 2011

Чтобы сделать это так, как вы хотите, вы должны установить связь между двумя таблицами.

Как: создать связь (отношение) между классами LINQ to SQL (конструктор O / R)

Кроме того, вы можете просто написать соединение вручную.

var activeArticles = from a in ctx.Articles
                     join s in ctx.statuses on a.status_id equals s.id
                     select a;

Если вы идете по пути ассоциации, будьте очень внимательны и не допускайте ошибки SELECT N + 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...