我有三张桌子:
[Products]
Id
Title
Info
Price
[ProductCategories]
Id
Title
ParentId
[ProductsInCategories]
Id
ProductId
ProductCategoryId
我正在尝试阅读特定类别的精选产品。我的代码没有使ProductCategoryId更加一致,只是从Product表中加载所有产品。哪里是我的错误?:
id-variable是方法参数。进来的价值是正确的。
var ProdInCat = from p in _context.Products
from pc in _context.ProductsInCategories
.Where(x => p.Id == x.ProductId && x.ProductCategoryId == id)
.DefaultIfEmpty()
select new
{
p.Id,
p.Title,
p.Info,
p.Price
};
答案 0 :(得分:1)
使用内部联接表达式
var ProdInCat = from p in _context.Products
from pc in _context.ProductsInCategories.Where(x => x.ProductCategoryId == id).DefaultIfEmpty()
on p.Id equals pc.ProductID
select new {
p.Id,
p.Title,
p.Info,
p.Price
};
答案 1 :(得分:1)
您可以根据外部(计算的)id
将类别中的产品过滤产品加入产品。
from p in _context.Products
join pc in _context.ProductsInCategories.Where(pic => pic.ProductCategoryId == id).DefaultIfEmpty()
on p.Id equals pc.ProductId
有关如何通过以下链接实现此目的的更多信息:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/join-clause