[英]Custom extension method to simplify LINQ to SQL statement
我有很多查询需要使用的LINQ代码片段
let catchmentId = Convert.ToInt32(
phy.PhysicalProperty_binData.Substring(offset + 3, 1) +
phy.PhysicalProperty_binData.Substring(offset + 2, 1) +
phy.PhysicalProperty_binData.Substring(offset + 1, 1) +
phy.PhysicalProperty_binData.Substring(offset, 1))
这可以很好地转换为SQL(并且对于我的特定需求而言,性能更高),但使查询看起来很丑陋。 有什么办法可以使我的发言不那么冗长? 也许是返回Expression>的扩展方法? 请注意,我不想将数据获取到客户端(作为SQL在服务器上运行),这会使事情变得更加复杂。 例如:
let catchmentId = phy.PhysicalProperty_binData.AnExtensionMethodHere<int>(offset)
我尝试编写一个扩展方法来执行此操作,但是提供程序只是忽略了该调用,或者抛出了一个异常,说明它不知道如何将该调用转换为SQL。 我们是否可以通过某种方式扩展SQL生成器来为我们执行此操作,或以某种方式生成它以生成相同的SQL?
提前致谢!
您可以在实体模型中映射自定义SQL函数。
http://msdn.microsoft.com/en-us/library/dd456812(v=vs.103).aspx
let catchmentId =
// Curry in invariant components.
let newSubstr end =
phy.PhysicalProperty_binData.Substring(offset + end, 1)
Convert.ToInt32(
newSubstr 3 +
newSubstr 2 +
newSubstr 1 +
newSubstr 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.