【问题标题】:Issue with search functionality using Linq使用 Linq 的搜索功能问题
【发布时间】:2012-01-04 21:27:24
【问题描述】:

我的产品表中有一个关键字列,关键字列将包含红色、绿色、白色、紫色、黑色等关键字。每个产品都有一个关键字。 I want a key word dropdownlist in the my search option so , that when black keyword is selected all the products which has a keyword black should be displayed, Is it possible to achieve something like this , if yes any assistance or help will be highly appreciated ??

我还想用关键字列填充下拉列表,例如,如果添加了具有不同关键字的新产品,下拉列表也应该包含该关键字。

目前我正在使用制造商进行搜索,以下是代码: 查看:

@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

【问题讨论】:

    标签: asp.net-mvc linq asp.net-mvc-3 entity-framework


    【解决方案1】:

    假设您可以直接引用您的产品表,这应该会为您提供一个独特的关键字列表。如果您只能通过制造商引用产品,我们需要对其进行一些修改。

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

    然后您可以通过 ViewData 将这些关键字作为选择列表传递给您的视图,如下所示:

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

    至于然后通过下拉列表使用选定的关键字来过滤产品表,您可以执行以下操作吗?:

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

    您只需要确保您的操作方法通过参数或请求对象从下拉列表中访问传入的关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多