Linq查询帮助

本文关键字:帮助 查询 Linq | 更新日期: 2023-09-27 18:02:44

我正试图将这个简短的SQL语句转换为linq,但我面临一些困难,这是我最近的尝试,显然它有一个错误:

SQL:

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

Linq:

'15'和'chiffon'在这里被参数'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); 

Linq查询帮助

Try

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;

至少,你的代码不会编译,因为在结束泛型括号之前有一个额外的空格。
第一行应该以IQueryable<Categories_Sub>开头。

那么,你的问题中没有足够的信息。您使用的是什么LINQ提供程序?是什么让你认为查询中有错误?

我重新格式化了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行假设您正在寻找具有特定类别id

的产品

但是从第4行开始的子查询只返回一个包含0个或多个categoryid的列表,必须= '15'

在这种情况下,为什么不

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

我知道这不是一个答案,但是它太大了,不能放在注释中。