我在亚音速论坛上问了以下问题,但似乎只得到了一个回复,所以我想我也应该在这里发帖,看看是否有人可以进一步了解这个问题......
我希望使用选择工具(或查询工具)通过 SubSonic 创建以下 SQL 语句。它使用一个名为“SPLIT()”的自定义函数:
SELECT * FROM VwPropertyList
WHERE VwPropertyList.idCreatedBy = 123
AND VwPropertyList.idCounty = 45
AND 29 IN (SELECT Item FROM SPLIT(DistrictGroupList, ','))
(此 SQL 的最后一部分使用了 SPLIT 函数)
我的亚音速等效项如下所示...
将 mySelect 调暗为新 SubSonic.Select
mySelect.From(VwPropertyList.Schema)
mySelect.Where(VwPropertyList.Columns.IdCreatedBy).IsEqualTo(123)
mySelect.And(VwPropertyList.Columns.IdCounty).IsEqualTo(45)
mySelect.And(29 ).In(New SubSonic.Select("Item").From("SPLIT(" & VwPropertyList.Columns.DistrictGroupList & ", ',')"))
由于最后一部分,这不起作用..如何将“ AND 29 IN (SELECT Item FROM SPLIT(DistrictGroupList, ',')) ” 添加到我的 Subsonic.Select 中?
我从亚音速论坛得到的回复建议我取消 Subsonic.Select 并用硬编码的 InlineQuery() 语句替换.. 比如:
Dim SQL as String = "Select " & VwPropertyList.Columns.Item
SQL = SQL & " From " & VwPropertyList.Schema.TableName
SQL = SQL & " Where " & VwPropertyList.Columns.IdCreatedBy & " = @CreatedBy "
SQL = SQL & " And " & VwPropertyList.Columns.IdCounty & " = @County "
SQL = SQL & " And @DistrictGroup IN (Select Item From SPLIT(DistrictGroupList,',')"Items = SubSonic.InlineQuery().ExecuteTypedList(Of MyItem)(SQL, 123,45,29)
如果可能的话,我更喜欢使用 SubSonic.Select,以便我可以利用分页功能等。
有任何想法吗?