我有两张桌子
产品:
CREATE TABLE [dbo].[product]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[p_name] VARCHAR (50) NOT NULL,
[p_desc] VARCHAR (250) NULL,
[p_price] VARCHAR (50) NOT NULL,
[p_colour] VARCHAR (70) NULL,
[p_cover] VARCHAR (50) NOT NULL,
[p_front] VARCHAR (50) NOT NULL,
[p_back] VARCHAR (50) NULL,
[p_add1] VARCHAR (50) NULL,
[p_add2] VARCHAR (50) NULL,
[p_cat] INT NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_product_catagory]
FOREIGN KEY ([p_cat]) REFERENCES [dbo].[catagory] ([Id])
)
Catagory :
CREATE TABLE [dbo].[Catagory]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[cat_name] VARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
)
使用以下示例数据:
Product
:
和Catagory
:
我想创建一个动作方法
public ActionResult ViewProducts(string Key)// contains category name
{
var product = db.products.where(p => p.p_cat.contains(key));
return View(product);
}
此方法应返回类别等于key的所有产品。例如,所有产品都属于衬衫类别。
我知道如何在SQL中执行此操作,但lambda语法对我来说是新的。
请帮忙,谢谢
这是我的模特 Click to view model
答案 0 :(得分:1)
var product = db.products.where(p => p.Categories.cat_name == key);
成员名称可能会有所不同,具体取决于EF如何反向设计表格名称。
答案 1 :(得分:0)
请使用以下内容更改您的Linq查询。
List<String> list = Arrays.asList("1", "2", "3", "4", "5");
String commaSeparated = String.join(",", list);
System.out.println(commaSeparated); //gives you 1,2,3,4,5
注意:实体名称可能因您的EF实体名称而异。
答案 2 :(得分:0)
您可以加入Product(p_cat)和Category(Id)并使用Cateroty过滤掉记录吗?
public ActionResult ViewProducts(string Key)// contains category name
{
var product = db.products
.Join(db.categoryies,
p => p.p_cat,
c => c.Id,
(p,c) => new { Product = p, Category = c })
.Where(x => x.Category.cat_name.Contains(key)).ToList();
return View(product);
}