【发布时间】:2016-08-29 09:43:02
【问题描述】:
我有一个产品表,可以为产品分配任意数量的过滤器规格 - 即颜色、类型等。分配给产品的过滤器值存储在查找表中。这些表有点复杂,但我可以使用的一个简单示例如下:
Products
-----------------
ProdID | Code | Price
1 | A1 | 2.99
2 | B1 | 10.99
10 | F4 | 20.00
Filters
-----------------
FilterID | Name
1 | Black
2 | Blue
4 | Round
10 | Waterproof
ProductFilterLookup
-------------------
ProdID | FilterID
1 | 1
1 | 4
1 | 10
2 | 1
2 | 10
10 | 1
因此,如果用户选择“黑色”和“防水”产品(FilterID 的 1 和 10),预期结果将是 ProdID 的 1 和 2,因为只有这些产品同时具有这两个过滤器。
可以为产品分配任何过滤器。我想获取所有包含一组选定过滤器的产品(意味着它具有所有过滤器值)。
我可以在 LINQ 或 SQL 中执行此操作,并且需要它尽可能高效(性能方面)。
【问题讨论】:
-
添加一些示例表数据和预期的结果。
-
对我来说有 3 种方法:第一种是将原始 SQL 语句发送到 SQL Server,第二种是使用实体框架,第三种是使用类型化的数据集——我告诉你,使您的应用类型安全
-
但是对于您的 SQL 命令:您必须在查找表上进行 SELECT,其中 FilterID 等于您的值,在 Product 表和 Filter 表上使用子 SELECT 来获取过滤器和产品的名称
标签: c# sql asp.net sql-server linq