从LINQ到实体查询中获取错误的数据

时间:2011-06-11 07:10:32

标签: c# linq-to-entities

我有一些表具有以下结构:

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的{​​{1}}匹配id表中与cat_id匹配的cat_van_rel的行传入的{1}}。

以下是一些数据的示例:

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 ven_id,我应该得到以下行:

1           food
3           water
4           juice

这是我的疑问:

1

但它从cat表中返回所有行。

我该如何解决这个问题?

我有它:

来自cat_ven_rel中的x

其中x.Ven.ven_id == venid

thnx的回复 选择新的{x.cat.cat_name,x.cat.cat_id}

2 个答案:

答案 0 :(得分:1)

尝试where x.cat_van_rel.ven_id == venid

之类的内容

(我需要生成的EntityModel类是准确的)

HTH

答案 1 :(得分:0)

你不能在这里使用函数,函数any决定一个序列是否包含任何元素。如果序列包含一个元素它仍然返回true! 你可以尝试:

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();

the introduce of function any