我的应用程序的关键部分运行速度太慢。
我决定将对此的数据访问移动到存储过程中。
此查询的结果是订单列表。那部分工作正常。
但是每个订单都有一个可接受的优先级列表。那就是我遇到问题的地方。
所以我在列表中有一个列表。我可以做两个查询并尝试将结果缝合在一起,但我想我会看看 Entity Framework 是否有更好的方法。
我的应用程序的关键部分运行速度太慢。
我决定将对此的数据访问移动到存储过程中。
此查询的结果是订单列表。那部分工作正常。
但是每个订单都有一个可接受的优先级列表。那就是我遇到问题的地方。
所以我在列表中有一个列表。我可以做两个查询并尝试将结果缝合在一起,但我想我会看看 Entity Framework 是否有更好的方法。
使用列表字典。
由于您实际上无法将字典传递到 SQL 查询中,因此您可能需要先从数据库中检索所有记录,然后使用 LINQ-to-objects 执行检查,例如:
Dictionary<int, List<int>> dict = new ...
var a = SomeEntity
.ToArray()
.Where(f => dict[f.key].Contains(f.someValue));
ToArray() 方法将整个结果集拉入内存(还有其他方法,但我通常是这样做的),并且以下 Where 子句在 LINQ-to-objects 而不是 LINQ-to-Entities 中运行,这意味着您的字典代码将运行良好。