gpt4 book ai didi

Linq to SQL - 多对多谓词

转载 作者:行者123 更新时间:2023-12-04 06:18:38 25 4
gpt4 key购买 nike

我熟悉在 Linq to SQL 中做简单的多对多关系(即简单的连接),但我现在很难思考。

我有三个表(因此,我的 Linq-to-SQL 模型中的实体)代表一个分类系统。标准问题真的:

产品 - 产品标签 - 标签

我正在编写一个方法,该方法返回一组产品,其中它们所在的标签与查询相匹配。因此,如果有人搜索“foo”,则将返回所有分配有标签“foobar”或“fooqux”(但不是“bazbar”)的产品。

我知道我必须将查询分为两部分:首先获取匹配的标签,然后获取具有这些标签的产品。这是我难倒的第二部分。

这是我到目前为止所得到的:

var tags = from t in db.Tags
where t.Name.Contains( tagSearchQuery )
select t;

var products = from p in db.Products
// then a miracle happens
select p;

非常感谢帮助:)

最佳答案

如果您只是从 ProductTags 开始,您可以在一个查询中完成。 table 。您可能还需要一个 Distinct避免与多个标签匹配的重复产品。

var products = (from pt in db.ProductTags
where pt.Tag.Name.Contains( tagSearchQuery )
select pt.Product).Distinct();

或者这是另一种方式:
var products = from p in db.Products
from pt in p.ProductTags
where pt.Tag.Name.Contains( tagSearchQuery )
select p

关于Linq to SQL - 多对多谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com