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);
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'
我知道这不是一个答案,但是它太大了,不能放在注释中。