Содержит любое слово строки

Я пытаюсь получить из базы данных любое имя или тег, которые соответствуют любому из слов из строки.
Что-то вроде поиска.

Пример:

Запрос: «Любой запрос, который соответствует»

У меня есть первая таблица с именем, а вторая с тегами для первой таблицы.

Мне нужно что-то подобное, а не тяжелая работа. Это не сработает, потому что содержит целую цепочку.

_db.Tag_Table.Where(t => t.First_Table.Name.Contains(query) || 
t.Tag_Table.Value.Contains(query))
                .Select(s => s.First_Table).ToList();

Любое разумное решение для этого.

c#,entity-framework,linq,linq-to-sql,

1

Ответов: 2


1 принят

Я думаю, что нашел решение, он возвращает правильные результаты, я думаю.

var queryList = query.Split(' ');

_db.Post.Where(f => queryList.Any(q => f.Title.Contains(q)) || queryList.Any(l => f.Tags.Any(t => t.Tag.Value.Contains(l))));

В каждом посте, для каждого слова запроса, которое я ищу в заголовке сообщения или в каждом теге, в таблице тегов. Я возвращаю результат, если у меня есть слово запроса в заголовке или в теге.

Спасибо за ответ. Звучит так, что второй ответ @ Zeeshan Adil аналогичен.


0

вы можете попробовать это и сообщить мне, если это сработало в комментариях:

 string[] terms = Query.Split(' ');
 string[] Results;

 string[] all = (from x in _db.Tag_Table
                    select x.Name).ToArray();

 Results =(from z in all
                       from w in terms 
                       where z.Contains(w)
                       select z).Distinct().ToArray();

редактировать

также попробуйте следующее:

string Query = "some value";
string[] terms = Query.Split(' ');


from x in _db.Tag_Table
           where terms.Any(val => p.First_Table.Name.Contains(val))
           select x;
C #, сущность-рамки, LINQ, LINQ к SQL,
Похожие вопросы