7
|
Frank Schwieterman · 技术社区 · 15 年前 |
1
4
很抱歉回答我自己的问题,但我找到了一个很好的解决办法。我认为,尽管这取决于您要做什么,但是有不同的方法可以在不计算iqueryable的情况下计算出不同的linq表达式。所以我希望人们能分享其他的解决方案。 我的解决方案是为分解查询创建一个“视图”。我之所以称之为视图,是因为它与sql视图(从linq客户机的角度)有很多共同点。但是,与sql视图不同,它不能被索引或持久化列。因此,使用这个视图成为一个瓶颈,使用一个实际的sql视图是合适的。
这样,我就可以去掉查询的重复部分,用以下内容替换原始查询:
你可以想象其他列被添加…我认为一个很酷的事情是,如果您添加了额外的列,但没有在最终的选择中使用它们,linq实际上不会从数据库中查询这些列。 |
2
1
我们也有同样的问题。它不支持开箱即用,这是lob应用程序的一个主要问题。最后我写了一篇关于linq表达式重用的代码项目文章,其中包括一个非常小的实用程序linqexpressionprjection,它支持在投影中重用(包括匿名类型)。 找到文章 here . 您可以将用于投影重用的部件作为 nuget package 消息来源是 CodePlex . 你的职位已经过了一段时间。我希望这对你还是有帮助的。如果不是的话,也许对其他阅读这篇文章的人来说。 |
3
0
将linq表达式作为因子的另一个重要方法是传递表达式,例如:
我是从巴拉克的文章中得到这个想法的,尽管他在这个话题上做的更多,我想我还是在这里再次提到这篇文章。直接指出这一点似乎是显而易见的第一件事。 |
Imad · Linq扩展方法没有使用Object类的Equals 1 年前 |
user8512043 · 根据每个元素中的数字对列表进行排序 2 年前 |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 2 年前 |