2011-06-11 60 views
0

我已经具有以下结构的一些表:获取错误的数据查询

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,我想从catidcat_van_relcat_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   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(); 

,但它从猫表返回所有行。

我该如何解决这个问题?

我懂了:

从X在cat_ven_rel

其中x.Ven.ven_id == venid

日Thnx乌拉圭回合回复 选择新{x.cat.cat_name,x.cat .cat_id}

回答

0

你不能使用任何功能在这里,任何的功能就是确定序列是否包含任何elements.if序列包含一个元素,它仍然返回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

+0

无效表达术语 '其中' 在给它 - objEntity.cat_ven_rel.where <---- – 1Mayur 2011-06-11 07:45:39

+0

func的参数应该在哪里(y => y.ven_id == venid) – 2011-06-11 07:53:46

1

尝试像where x.cat_van_rel.ven_id == venid

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

HTH

+0

委托 'System.Func ' 不采取 '1' 参数 – 1Mayur 2011-06-11 07:26:05