[英]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
的行,其id
与cat_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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.