2011-07-19 261 views
1

我想這短短的SQL語句轉換成LINQ,但我面臨着一些困難,這是我的最新嘗試,顯然他有一個錯誤:Linq查詢幫助

SQL:

select ProductID from products where 
categoryID in (select categoryID from categories_sub 
       where categoryID='15' and category_sub_name = 'chiffon') 

的Linq:

'15' 和 '薄紗' 由參數取代 'CID' 和 'subCatID' 在這裏:

IQueryable<Categories_Sub > cat = (from c in db.Categories_Sub 
          where c.CategoryID == cID 
           & c.Category_Sub_ID == subCatID 
          select c); 


var subcat = (from c in db.Products 
       where cat.Contains(c.ProductID) 
       select c); 
+3

Linq to SQL or Entity Framework?什麼樣的錯誤? –

+1

咦?您看起來像是在SQL查詢中選擇了categoryID == 15的所有產品。這是正確的嗎?你想達到什麼目的? – musefan

+0

當您稍後通過等於'15'來過濾它時,選擇'categoryID'有什麼意義? –

回答

3

嘗試

var Result = from p in products 
       from subc in categories_sub 
       where subc.categoryID=15 and 
        subc.category_sub_name = "chiffon" and 
        p.categoryID = subc.categoryID 
       select p.ProductID; 
0

最小的情況是,您的代碼不會編譯,因爲在關閉通用括號之前有一個額外的空間。
第一行應以IQueryable<Categories_Sub>開頭。

然後,您的問題中沒有足夠的信息。您使用的是LINQ提供程序?是什麼讓你認爲查詢中有錯誤?

0

我重新格式化SQL談論它在更深入一點

1 select ProductID 
2 from products 
3 where categoryID in 
4 (select categoryID 
5  from categories_sub 
6  where categoryID='15' and 
7    category_sub_name = 'chiffon') 

3號線設你正在尋找的產品與特定的categoryID

但第4行開始的子查詢只返回0個或更多categoryID的列表,它們必須='15'

在這種情況下,爲什麼不

1 select ProductID 
2 from products 
3 where categoryID = '15' 

我知道這是不是一個答案,但它是太大,無法在註釋裏。我會盡力回答。