将实体框架与存储过程一起使用以获取其中包含另一个列表的列表

时间:2013-07-02 20:27:44

标签: .net entity-framework

我的应用程序的关键部分运行速度太慢。

我决定将此数据访问权限移到存储过程中。

此查询的结果是订单列表。那部分工作正常。

但是每个订单都有一个可接受的优先级列表。这就是我遇到问题的地方。

所以我在列表中有一个列表。我可以做两个查询并尝试将结果组合在一起,但我想我会看看实体框架是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

使用列表字典。

由于您无法将字典实际传递到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,意味着你的字典代码运行正常。