2017-09-10 27 views
0

我有兩個表加入的Asp.net MVC lambda語法基礎和包含

產品

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]) 
) 

而且產品類別

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); 
} 

這個方法應該返回其中類別等於密鑰的所有產品。例如所有產品都屬於襯衫類別。

我知道如何在SQL中做到這一點,但lambda語法對我來說是新的。

請幫幫忙,謝謝

這裏是我的模型 Click to view model

edo

+0

** **錯字警告:這是一個「貓** **ê血腥」(而不是「產品類別」) –

回答

0

您可以加入產品(p_cat)和類別(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); 
    } 
+0

局部變量c不能聲明。 –

+0

對不起,它的'catagory'而不是類別。你能再次回答我 –

+0

哇,它工作非常感謝 –

1

var product = db.products.where(p => p.Categories.cat_name == key);

成員的名字可能取決於如何EF已經反向工程的表的名稱。

+0

產品包含產品類別編號和產品類別名稱在產品類別表presend。 –

+0

plz再次看到表格。謝謝 –

+0

我試過了。它不工作 –

0

請更改您的Linq查詢與下面的一個。

VAR產物=(從對在db.products 加入下在db.categoryies ON p.p_cat等於c.Id 其中c.cat_name.Contains(鍵) 選擇P).ToList();

注意:實體的名稱可能因您的EF實體名稱而異。

請標記答案爲接受,如果這將起作用。

+1

謝謝,它的工作 –

+0

@Zeeshanhack好吧。請標記回答它是否適合您。 –