用于搜索特定字符串的相关 (1:m) 记录的 LINQ 查询是什么?

发布于 2024-12-09 01:04:09 字数 566 浏览 0 评论 0原文

我以为我会很容易找到答案,但到目前为止还没有。我有相关的表格——博客和标签。标签架构如下所示:

TagTableID (identity column)
BlogID (foreign key)
Tag (string)

这些表在 SQL Server 中是相关的。每个博客条目可以有多个标签,博客条目的每个标签都会在标签表中生成一个新条目。我想搜索其中包含特定标签的博客条目。我可以在 Linq 中执行此操作:

var blogQuery =
            from blogentry in blog.blogs
            where blogentry.Tags = [??]
            select blogentry;

由于每个博客条目有多个标签,因此 blogentry.Tags 在 Linq 中可用并返回 EntitySet。但我不知道如何搜索(我猜)结果集合以查找特定字符串。 (上面示例中显示 [??] 的部分。)

我怀疑这需要更复杂的查询,但这就是我开始的地方......

I thought I'd find an answer readily, but not so far. I have related tables -- Blog and Tags. The Tags schema looks like this:

TagTableID (identity column)
BlogID (foreign key)
Tag (string)

The tables are related in SQL Server. Each blog entry can have multiple tags, and each tag for a blog entry generates a new entry in the Tags table. I want to search for blog entries that have specific tags in them. I can do this in Linq:

var blogQuery =
            from blogentry in blog.blogs
            where blogentry.Tags = [??]
            select blogentry;

Since there's multiple tags per blog entry, blogentry.Tags is available in Linq and returns an EntitySet. But I don't know how to search (I guess) the resulting collection to find a specific string. (The bit where it says [??] in the example above.)

I suspect this requires a more complex query, but this is where I've started ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟火散人牵绊 2024-12-16 01:04:09

我假设您使用的是 Linq 2 SQL 或 Linq 2 实体?

我没有对此进行测试,但我相信类似的操作应该有效:

var tagsToLookFor = new[] {"tag1", "tag2"}; 

var blogQuery = 
        from blogentry in blog.blogs 
        where blogentry.Tags.Any(t => tagsToLookFor.Contains(t.Tag))
        select blogentry; 

不过,请使用 SQL 探查器验证生成的 SQL。

I assume you're using Linq 2 SQL or Linq 2 Entities?

I didn't test this, but I believe something like this should work:

var tagsToLookFor = new[] {"tag1", "tag2"}; 

var blogQuery = 
        from blogentry in blog.blogs 
        where blogentry.Tags.Any(t => tagsToLookFor.Contains(t.Tag))
        select blogentry; 

Do verify the resulting SQL with SQL profiler though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文