С Новым годом! Форум программистов, компьютерный форум, киберфорум
LINQ
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
1

Поиск по базе

18.06.2019, 20:00. Показов 1133. Ответов 6
Метки c#, mvc 5, sql (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер
Друзья! помогите, пожалуйста, с реализацией поиска

есть такая база

SQL
1
2
3
4
5
6
7
8
9
[Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [CategoryName] NVARCHAR(50) NULL, 
    [CategoryId] INT NULL,
    [BrandName] VARCHAR(50) NULL, 
    [BrandId] INT NULL,
    [Mark] VARCHAR(100) NOT NULL, 
    [YEAR] INT NULL, 
    [Price] NUMERIC(18, 2) NULL, 
    [ImageName] NVARCHAR(100) NULL,
Сделала такую модельку для поиска:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 public class SearchVM
    {
        public SearchVM() { }
 
        public SearchVM(BicycleDTO row)
        {
            Id = row.Id;
            CategoryName = row.CategoryName;
            CategoryId = row.CategoryId;
            BrandName = row.BrandName;
            BrandId = row.BrandId;
            Mark = row.Mark;
            Year = row.Year;
            Price = row.Price;
            ImageName = row.ImageName;
        }
 
 
        public int Id { get; set; }
        public string CategoryName { get; set; }
        [DisplayName("Category")]
        public int CategoryId { get; set; }
        public string BrandName { get; set; }
        [DisplayName("Brand")]
        public int BrandId { get; set; }
        public string Mark { get; set; }
        public int Year { get; set; }
        public decimal Price { get; set; }
        [DisplayName("Image")]
        public string ImageName { get; set; }
    }
Метод для поиска выглядит так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[HttpGet]
        public ActionResult SearchProduct(int? page, string searchText)
        {
            List<SearchVM> listOfSearchVM;
 
            var pageNumber = page ?? 1; //это для постраничного отображения
 
            using (Db db = new Db())
            {
                listOfSearchVM = db.Bicycles.ToArray()
                    .Where(x => x.BrandName.Contains(searchText))
                    .Select(x => new SearchVM(x)).ToList();
            }
 
            var onePageOfSearch = listOfSearchVM.ToPagedList(pageNumber, 6);  //это для постраничного отображения
            ViewBag.onePageOfSearch = onePageOfSearch;  //это для постраничного отображения
 
            return View(listOfSearchVM);
        }
Кнопочка поиска:

HTML5
1
2
3
4
<form class="form-inline" method="get" action="@Url.Action("SearchProduct", "Shop")">
            <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" name="searchText">
            <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
Поиск работает, только не так, как нужно. Приходится вводить названия Брэндов точно как в таблице. Например: Apple - находит, а если написать apple - уже нет ничего в базе

Может как-то через select можно переписать запрос, с лямбда выражением у меян не получается.

P.s. ещё хотелось бы, чтобы поиск работал по двум колонкам: искал слово в колонке Brand и колонке Mark. Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2019, 20:00
Ответы с готовыми решениями:

Поиск в ADoquery, Delphi, поиск в базе данных
Доброго времени суток многоуважаемые пользователи данного сайта! Есть очень глупая проблема, с...

Поиск в базе данных (поиск далее)
Добрый вечер! Нужна ваша помощь. Делаю поиск по базе, использую компонент AdoTable. В базе есть...

поиск по базе
необходимо командой @DbLookup вытащить из текущей базы данных из view &quot;Default&quot; все значения...

Поиск по базе
люди пожалуйста помогите! Скажите как мне найти в базе логин пользователя,а зетем в php присвоить...

6
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
18.06.2019, 22:51 2
TSQL: Like, upper, lower
1
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
18.06.2019, 23:43  [ТС] 3
Сделала вот так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public ActionResult SearchProduct(int? page, string searchText)
        {
            List<SearchVM> listOfSearchVM;
 
            var pageNumber = page ?? 1;
 
            using (Db db = new Db())
            {
                var qry = from res in db.Bicycles
                    where res.BrandName.StartsWith(searchText)
                    select new SearchVM
                    {
                        BrandId = res.BrandId,
                        BrandName = res.BrandName,
                        CategoryId = res.CategoryId,
                        CategoryName = res.CategoryName,
                        Id = res.Id,
                        ImageName = res.ImageName,
                        Mark = res.Mark,
                        Year = res.Year
                    };
                listOfSearchVM = qry.ToList();
            }
 
            var onePageOfSearch = listOfSearchVM.ToPagedList(pageNumber, 6);
            ViewBag.onePageOfSearch = onePageOfSearch;
 
            return View(listOfSearchVM);
        }
Всё работает А как бы сделать, чтобы по двум колонкам: db.BrandName и db.Mark?
0
2808 / 1677 / 885
Регистрация: 14.04.2015
Сообщений: 5,722
19.06.2019, 09:14 4
kulichiki96,
C#
1
where res.BrandName.StartsWith(searchText) || res.Mark.StartsWith(searchText2)
1
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
19.06.2019, 09:42  [ТС] 5
AndreyVorobey,
StartWith ищет с начача строки, а есть возможность выполнить поиск, если строка из нескольких слов?
Например строка: "Apple Iphone XS Plus", чтобы, если ввести в поиск Plus нашлись все Айфоны, содержащие Plus.
0
2808 / 1677 / 885
Регистрация: 14.04.2015
Сообщений: 5,722
19.06.2019, 09:48 6
kulichiki96, использую вместо StartWith Contains
1
3 / 3 / 0
Регистрация: 01.02.2019
Сообщений: 67
19.06.2019, 10:12  [ТС] 7
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
использую вместо StartWith Contains
спасибо, работает замечательно
0
19.06.2019, 10:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2019, 10:12
Помогаю со студенческими работами здесь

Поиск по базе
Добрый день, форумчане. Вобщем проблема такая, нужно реализовать поиск по строкам в базе данных, но...

Поиск по базе
всем привет private void button3_Click(object sender, EventArgs e) { ...

Поиск по базе
Есть вот такой вот поиск &lt;form action = &quot;result.php&quot; method = &quot;post&quot;&gt; Выберите параметр поиска:...

поиск по базе
помогите сделать поиск форму я сделал нужно чтобы при вводе в верхнее поле в список выводились все...

Поиск в базе
Добрый вечер. Прошу помощи по написанию кода, это моя первая программа. Есть база baza и поле...

Поиск по базе
Помогите пожалуйста с написанием поиска по MySQL базе с такими столбцами: номер телефона, фамилия,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru