У меня есть функция VB.NET, чтобы получить список жалоб, основанных на параметре состояния. Он использует метод LINQ и работает нормально:VB.NET - Измените запрос LINQ на запрос DataSet
Public Function getComplain(ByVal stat As Integer) As List(Of ComplainTable)
Dim listt = (From tbl In context.ComplainTable _
Where tbl.STATUS = stat _
Select tbl).ToList
Return listt
End Function
Вопрос, я хочу изменить запрос LINQ к DataSet запроса вместо. Код, который я пробовал, приведен ниже, но я получаю пустой результат/вывод:
Public Function getComplain(ByVal stat As Integer) As List(Of ComplainTable)
Dim ut As New Util
Dim query = "SELECT * FROM ComplainTable"
Dim ds As DataSet = ut.getData(query)
Dim dt As DataTable = ds.Tables("SystemComplain") '???
Dim dr As IEnumerable(Of SystemComplain) = dt.AsEnumerable.Select("STATUS = " & stat) '???
Return dr.ToList
End Function
Линии, обозначенные ??? это те части, которые я не уверен, что делаю правильно. Я очень новичок в .NET и вам нужно много искать в Интернете, чтобы получить основные вещи.
UPDATE 1
Public Function getComplain(ByVal stat As Integer) As List(Of ComplainTable)
Dim ut As New Util
Dim query = "SELECT * FROM ComplainTable"
Dim ds As DataSet = ut.getData(query)
Dim dt As DataTable = ds.Tables(0)
Dim dr As IEnumerable(Of ComplainTable) = _
dt.AsEnumerable. _
Where(Function(x) x.Field(Of String)("STATUS") = stat). _
Select(Function(x) New ComplainTable With { _
.STATUS = x.Field(Of String)("STATUS") _
} _
)
Return dr.ToList
End Function
Я редактировал использовать индекс для ds.Tables (0) и следуйте за строкой IEnumerable. Но когда я использую IEnumerable (Of DataRow), я получил ошибку, которую DataRow не может быть преобразован в ComplainTable, что является возвращаемым типом функции. – navilink
@navilink Вам нужно вручную создать экземпляр 'ComplainTable' из' DataRow'. Первоначально он создается LINQ-to-SQL, теперь, когда вы переключаетесь на LINQ-to-DataSet, вам нужно обрабатывать его вручную. Проверьте ** ОБНОВЛЕНИЕ ** раздел – har07
Хорошо, я добавил ваш код UPDATE (удалил последнюю скобку из-за синтаксической ошибки), мой последний код находится в UPDATE 1 (в моем исходном сообщении). Тем не менее ничего не возвращается. Я уверен, что в наборе Dataset есть элементы, потому что мне удалось распечатать содержимое. – navilink