2011-11-23 101 views
1

我在我的產品表中有一個關鍵字列,關鍵字列將包含例如紅色,綠色,白色,紫色,黑色等關鍵字。每個產品都有一個關鍵字。我想在我的搜索選項中使用關鍵詞dropdownlist,因此,當選擇黑色關鍵字時,應顯示所有關鍵字爲黑色的產品,是否可以實現此類功能,如果有,可以獲得任何幫助或幫助??使用Linq搜索功能的問題

另外,我想填充關鍵字列的下拉列表,例如,如果添加了具有不同關鍵字的新產品,下拉列表也應包含該關鍵字。

目前我使用的製造搜索,下面是代碼: 查看:

@if (Model.AvailableManufacturers.Count > 0) 
          { 
           <tr> 
            <td class="title"> 
             @Html.LabelFor(model => model.Mid): 
            </td> 
            <td class="data"> 
             @Html.DropDownListFor(model => model.Mid, Model.AvailableManufacturers) 
            </td> 
           </tr> 
          } 

控制器:

var manufacturers = _manufacturerService.GetAllManufacturers(); 
     if (manufacturers.Count > 0) 
     { 
      model.AvailableManufacturers.Add(new SelectListItem() 
      { 
       Value = "0", 
       Text = _localizationService.GetResource("Common.All") 
      }); 
      foreach (var m in manufacturers) 
       model.AvailableManufacturers.Add(new SelectListItem() 
       { 
        Value = m.Id.ToString(), 
        Text = m.Name, 
        Selected = model.Mid == m.Id 
       }); 
     } 

ManufactureService.cs:

 public virtual IList<Manufacturer> GetAllManufacturers(bool showHidden = false) 
    { 

      var query = from m in _manufacturerRepository.Table 
         orderby m.DisplayOrder 
         where (showHidden || m.Published) && 
         !m.Deleted 
         select m; 
      var manufacturers = query.ToList(); 
      return manufacturers; 

    } 

問題:我應該使用Linq Query來調用表p中的不同關鍵字roduct並在下拉列表中填充。

問題2:用於搜索所選關鍵字的產品的Sql查詢。

我使用MVC3剃刀和LINQ

回答

1

這應該給你的關鍵字假設你可以直接引用您的產品表中的不同列表。如果您只能通過製造商參考產品,則需要稍微改動一下。

var availableKeywords = productTable.Select(product => product.Keyword).Distinct(); 

然後,您可以通過這些關鍵字,通過ViewData的一個選擇列表視圖如下:

ViewData["Keywords"] = new SelectList(availableKeywords); 

至於然後用選擇的關鍵詞通過下拉列表過濾產品表可以你這樣做以下?:

var matchingProducts = productTable.Where(product => product.Keyword == selectedKeywordFromDropDown); 

你只需要確保你的操作方法,通過訪問一個參數或請求objec在關鍵字傳遞從下拉噸。