У меня много похожих вызовов в базу данных, и они отлично работают
Using ta As New QT_SSTEntities
Return ta.Product.
Select(Function(c) New RadComboBoxData() With {.Text = c.FieldName1, .Value = c.FieldName1}).
ToArray()
End Using
Using ta As New QT_SSTEntities
Return ta.City.
Select(Function(c) New RadComboBoxData() With {.Text = c.CityName, .Value = c.CityName}).
ToArray()
End Using
Using ta As New QT_SSTEntities
Return ta.OtherProduct.
Select(Function(c) New RadComboBoxData() With {.Text = c.FieldName3, .Value = c.FieldName3}).
ToArray()
End Using
Они производят SQL-код, подобный этому:
SELECT FieldName1 FROM Product
Я хочу вымогать
Select(Function(c) New RadComboBoxData() With {.Text = c.SomeField, .Value = c.SomeField}).ToArray()
в другой метод (что-то в этом роде, но он не работает).
<Extension()>
Public Function ToRadComboBoxData(Of TSource, TItem)(ByVal source As IQueryable(Of TSource), selector As Expression(of Func(Of TSource, TItem))) As RadComboBoxData()
Dim r = (From row In source Select selector(row)).ToArray() 'Build tree from expression. How???
Return (From v In r
Let rv = If(v Is Nothing, Nothing, v.ToString())
Select New RadComboBoxData() With {.Text = rv, .Value = rv}).ToArray()
End Function
и звоните следующим образом:
Using ta As New QT_SSTEntities
Return ta.Product.ToRadComboBoxData(Function(c) c.FieldName1)
End Using
Using ta As New QT_SSTEntities
Return ta.City.ToRadComboBoxData(Function(c) c.CityName)
End Using
Using ta As New QT_SSTEntities
Return ta.OtherProduct.ToRadComboBoxData(Function(c) c.FieldName3)
End Using