【发布时间】:2014-04-02 13:10:19
【问题描述】:
我正在使用 C# 和实体框架。我有一个包含我的产品的 Products 表 (Id, Name)、一个包含所有可用标签的 Tags 表 (Id, Name) 和一个用于为产品分配标签的 ProductTags 表 (Id, ProductId, TagId)。
用户可以指定他想查看具有多个标签的产品 (Int[] SelectedTagIds)。
问题是:如何获取所有产品,每个产品都有用户指定的所有标签。
现在我正在使用这个查询
`var reault = Context.Products
.Where(x => SelectedTagIds.All(y =>
(x.ProductTags.Select(z => z.TagId))
.Contains(y)));`
我想知道这是正确的方法还是有更好/更快的方法?
【问题讨论】:
-
您是否遇到实际性能问题或尝试提前优化?
-
@Oren 我正在尝试优化建议,因为项目现在正在开发中,数据库中只有 10 个测试产品/3 个测试标签...
-
优化的最佳方式是避免理论化,并实际保留大量标签和产品及其关联——最好比您未来预期的数量略大。然后,您可以测试性能是否可以接受,而不是猜测不同的方法是否会更好。
标签: c# linq entity-framework