Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Поиск вхождений в строке  [new]
Miles
Member

Откуда:
Сообщений: 230
Коллеги такой затык, как в EF переделать код чтобы поиск происходил не по конечному числу слов в search_words


 string[] search_words = "aa bb".Split(' ');

                   var grid_Files = from dsp in db.vFiles
                                     where dsp.flName.Contains(sf.search_word[0]) | dsp.flTags.Contains(sf.search_word[1])
                                     select dsp;
20 апр 15, 21:49    [17541700]     Ответить | Цитировать Сообщить модератору
 Re: Поиск вхождений в строке  [new]
handmadeFromRu
Member

Откуда: родина Ленина!
Сообщений: 1996
т.е вы хотите искать по любому кол-ву слов и поиск с Like?
21 апр 15, 09:18    [17542361]     Ответить | Цитировать Сообщить модератору
 Re: Поиск вхождений в строке  [new]
carrotik
Member

Откуда:
Сообщений: 1491
Miles,

тынц
21 апр 15, 09:40    [17542464]     Ответить | Цитировать Сообщить модератору
 Re: Поиск вхождений в строке  [new]
Miles
Member

Откуда:
Сообщений: 230
handmadeFromRu
т.е вы хотите искать по любому кол-ву слов и поиск с Like?


Да
21 апр 15, 11:09    [17542863]     Ответить | Цитировать Сообщить модератору
 Re: Поиск вхождений в строке  [new]
Miles
Member

Откуда:
Сообщений: 230
carrotik
Miles,

тынц


Это не совсем то. Проблем с поиском слова в слово не возникает. А вот в виде подстроки не получается
21 апр 15, 11:10    [17542869]     Ответить | Цитировать Сообщить модератору
 Re: Поиск вхождений в строке  [new]
handmadeFromRu
Member

Откуда: родина Ленина!
Сообщений: 1996
Miles,

ну тогда в вашем случае надо сделать вот так, предварительно изменив работу склеивания между where с and на or (можно тут это глянуть)
foreach(var item  in search_words)
query = query.where(x=> x.flName.Contains(item) )


имхо вы убьете всю скорость, да и запрос кажется странным. возможно вам стоит поглядеть в сторону lucene, для поиска по строке.
21 апр 15, 11:33    [17543008]     Ответить | Цитировать Сообщить модератору
 Re: Поиск вхождений в строке  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4959
Miles,
Можно собрать свой Expression
или как то так.
string[] search_words = "aa bb".Split(' ');

            var grid_Files = from dsp in db.vFiles
                             where dsp.flName.Contains(sf.search_word[0]) 
                             select dsp;
            foreach (var x in search_words.Skip(1))
            {
                grid_Files = grid_Files.Union(db.vFiles.Where(y => y.flName.Contains(x)));
            }
21 апр 15, 11:49    [17543107]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить