Проблема с функцией поиска с использованием Linq - PullRequest
1 голос
/ 23 ноября 2011

В моей таблице продуктов есть столбец с ключевыми словами, в столбце ключевых слов будут, например, красные, зеленые, белые, фиолетовые, черные. У каждого продукта есть ключевое слово. Я хочу, чтобы в раскрывающемся списке ключевых слов был выбран раскрывающийся список ключевых слов, чтобы при выборе черного ключевого слова отображались все продукты с черным ключевым словом, можно ли добиться чего-то подобного, если да, любая помощь или помощь будут высоко оценены ??

Также я хочу заполнить выпадающий список столбцом ключевых слов, например, если добавлен новый продукт с другими ключевыми словами, выпадающий список должен включать это ключевое слово.

В настоящее время я использую производство для поиска, ниже приведен код: Вид:

@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 следует использовать, чтобы вызвать отдельные ключевые слова из табличного продукта и указать их в раскрывающемся списке.

Вопрос 2: Запрос Sql для поиска товаров по выбранному ключевому слову.

Я использую бритву mvc3 и LINQ

1 Ответ

1 голос
/ 23 ноября 2011

Это должно дать вам четкий список ключевых слов, при условии, что вы можете напрямую ссылаться на таблицу продуктов. Если вы можете ссылаться на товары только через производителя, нам нужно его немного изменить.

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

Затем вы можете передать эти ключевые слова в виде списка выбора в представление через ViewData следующим образом:

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

Что касается последующего использования выбранного ключевого слова в раскрывающемся списке для фильтрации таблицы продуктов, не могли бы вы сделать что-то вроде следующего?

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

Вам просто нужно убедиться, что ваш метод действия обращается к переданному ключевому слову из выпадающего списка через параметр или из объекта Request.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...