包含任何字符串词

时间:2018-07-06 07:21:58

标签: c# entity-framework linq linq-to-sql

我试图从数据库中获取与字符串中的任何单词匹配的任何名称或标记。
类似于搜索。

示例:

  

查询:“任何匹配的查询”

我的第一个表具有名称,第二个表具有用于第一表的标签。

我需要这样的东西,而不是性能高的东西。这将不起作用,因为其中包含检查整个字符串。

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

任何合理的解决方案。

2 个答案:

答案 0 :(得分: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第二个答案很相似。

答案 1 :(得分: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;
相关问题