2011-06-11 58 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