首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有更多匹配的Linq SQL搜索标记

具有更多匹配的Linq SQL搜索标记
EN

Stack Overflow用户
提问于 2017-10-12 00:51:48
回答 1查看 81关注 0票数 0

我正在用C# MVC编写一个标签搜索,但是我只能得到所有有一个单词的结果。-输出只应在所有输入单词匹配的情况下进行,如果输入中有两个单词,则不包括输出,但其中只有一个匹配。

到目前为止我的代码是:

代码语言:javascript
运行
AI代码解释
复制
List<String> list = Request["tags"].Split(' ').ToList();
KDBEntities q = new KDBEntities();

var query = (from tag in q.KDB_tags join question in q.KDB_questions on tag.question_id equals question.id where list.Any(x => x.Equals(tag.tag)) select question);
var Rquery = query.GroupBy(x => x.id).Select(grp => grp.FirstOrDefault()).ToList();


return View(Rquery);

我已经想了很长一段时间了,但没有运气。

希望这是有意义的,你们中的任何人都可以帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-12 02:07:26

标签列表:

代码语言:javascript
运行
AI代码解释
复制
List<TagObj> tags = new List<TagObj>()
{
    new TagObj() { Id = 1, QuestionId = 1, Tag = "news" },
    new TagObj() { Id = 2, QuestionId = 1, Tag = "sports" },
    new TagObj() { Id = 3, QuestionId = 1, Tag = "famous" },
    new TagObj() { Id = 4, QuestionId = 2, Tag = "news" },
    new TagObj() { Id = 5, QuestionId = 2, Tag = "sports" },
    new TagObj() { Id = 6, QuestionId = 3, Tag = "news" },
    new TagObj() { Id = 7, QuestionId = 4, Tag = "funny" },
};

问题清单:

代码语言:javascript
运行
AI代码解释
复制
List<QuestionObj> questions = new List<QuestionObj>()
{
    new QuestionObj(){ QuestionId = 1, Question = "Whats up footballers?" },
    new QuestionObj(){ QuestionId = 2, Question = "These are famous news?" },
    new QuestionObj(){ QuestionId = 3, Question = "Read all about it?" },
    new QuestionObj(){ QuestionId = 4, Question = "You know whats funny?" }
};

这些是来自请求的传入标记:

代码语言:javascript
运行
AI代码解释
复制
var incomingTags = new List<string>() { "news", "sports" };

以下是以下问题:

代码语言:javascript
运行
AI代码解释
复制
    var query = from t in tags
                join q in questions on t.QuestionId equals q.QuestionId
                where incomingTags.Contains(t.Tag)
                select new { question = q, tag = t };

    var result = query.
        GroupBy(g => g.question.QuestionId).
        Where(g => g.ToList().Select(l => l.tag.Tag).SequenceEqual(incomingTags)).
        Select(s => s.First().question).ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46705278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档