Получение неправильных данных из запроса LINQ to Entities - PullRequest
0 голосов
/ 11 июня 2011

У меня есть несколько таблиц, которые имеют следующую структуру:

cat(
    cat_id(pk),
    cat_name)

ven(
    ven_id(pk),
    ven_name)

cat_van_rel(
    cat_ven_rel_id,
    cat_id(fk),
    ven_id(fk))

Учитывая, что ven_id передано из функции, я хочу строки из cat, чей id соответствует cat_id в таблице cat_van_rel, которая соответствует ven_id, который был передан.

Вот пример некоторых данных:

cat:
    cat_id     cat_name
    1           food
    2           alcohol
    3           water
    4           juice


cat_ven_rel:
    cat_ven_rel - cat_id - ven_id
    1           - 1      - 1
    2           - 3      - 1
    3           - 4      - 1
    4           - 2      - 2
    5           - 1      - 2
    6           - 4      - 2

Итак, учитывая ven_id 1, я должен получить следующие строки:

1           food
3           water
4           juice

Это мой запрос:

List<cat> lst = (from x in objEntity.cat
                 where objEntity.cat_ven_rel.Any(y => y.ven.ven_id==venid)
                 select x).ToList();

но он возвращает все строки из таблицы cat.

Как я могу это исправить?

Я получил:

из x в cat_ven_rel

где x.Ven.ven_id == venid

Спасибо за ваши ответы выберите новое {x.cat.cat_name, x.cat.cat_id}

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Попробуйте что-то вроде where x.cat_van_rel.ven_id == venid

(мне нужен точный созданный класс EntityModel)

HTH

0 голосов
/ 11 июня 2011

вы не можете использовать здесь функцию any, функция any определяет, содержит ли последовательность какие-либо элементы.Вы можете попробовать:

List<cat> lst = (from x in objEntity.cat
where objEntity.cat_ven_rel.where(y => y.ven.ven_id==venid).select(y => y.cat_id).contains(x.cat_id)
select x).ToList();

введение функции любой

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