我的产品表中有一个关键字列,关键字列将包含红色,绿色,白色,紫色,黑色等关键字。每个产品都有一个关键字。我想在我的搜索选项中输入一个关键词下拉列表,这样,当选择黑色关键字时,应该显示所有具有关键字黑色的产品,是否可以实现这样的效果,如果是,任何帮助或帮助都将受到高度赞赏??
另外,我想用关键字列填充下拉列表,例如,如果添加了具有不同关键字的新产品,则下拉列表也应该包含该关键字。
目前我正在使用制造商进行搜索,下面是代码: 视图:
@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从表格产品中调用不同的关键字,并在下拉列表中填充。
问题2:用于搜索所选关键字的产品的SQL查询。
我正在使用mvc3 razor和LINQ
答案 0 :(得分:1)
这应该为您提供一个独特的关键字列表,假设您可以直接引用您的产品表。如果您只能通过制造商参考产品,我们需要对其进行一些修改。
var availableKeywords = productTable.Select(product => product.Keyword).Distinct();
然后,您可以通过ViewData将这些关键字作为选择列表传递给您的视图,如下所示:
ViewData["Keywords"] = new SelectList(availableKeywords);
然后,通过下拉列表使用选定的关键字过滤产品表,您可以执行以下操作吗?:
var matchingProducts = productTable.Where(product => product.Keyword == selectedKeywordFromDropDown);
您只需要确保您的操作方法通过参数或Request对象从下拉列表中访问传入的关键字。