繁体   English   中英

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

[英]Getting wrong data from LINQ to Entities query

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

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传递的 ven_id,我想要来自cat的行,其idcat_van_rel表中的cat_id匹配,该表与传入的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 表中返回所有行。

我怎样才能解决这个问题?

我知道了:

来自 cat_ven_rel 中的 x

其中 x.Ven.ven_id == venid

谢谢你的回复 select new {x.cat.cat_name,x.cat.cat_id}

尝试类似where x.cat_van_rel.ven_id == venid

(准确地说,我需要生成的 EntityModel class)

高温高压

你不能在这里使用 function any ,function 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();

function的介绍

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM