【发布时间】:2015-03-06 22:08:54
【问题描述】:
我在 Visual Studio 2012 中使用实体框架 6.1.2。现在我有实现这种效果的代码,其中 min、max 和 item.value 是双打:
If Not Double.IsNegativeInfinity(min) AndAlso Not Double.IsPositiveInfinity(max) Then
query = From item In query
Where item.value >= min AndAlso item.value <= max
select item
ElseIf Not Double.IsNegativeInfinity(min) Then
query = From item In query
Where item.value >= min
select item
ElseIf Not Double.IsPositiveInfinity(max) Then
query = From item In query
Where item.value <= max
select item
End If
提供的示例很简单,但有几个复杂查询的实例我必须有效地编写三遍,因为实体框架不知道如何处理无限双精度数。
我想做的是将所有内容替换为:
query = From item In query
Where in_range(item.value, min, max)
select item
这样in_range 可以扩展为任何必要的内容。
这可能吗?如果可以,我该怎么做?
编辑:我的一些查询更复杂,涉及在某些子查询的结果或不同命名的列上使用in_range。
例如,它可能用于查找小部件组件总重量小于 20 的所有小部件。
它可能不止一次使用但在不同的列中,例如查找高度在一个范围内而宽度在另一个范围内的矩形。
我可能应该更清楚一点,但 item 和 value 只是可能是任何东西的占位符。
【问题讨论】:
标签: vb.net linq entity-framework where