Попытка выбрать одну случайную строку из БД с использованием структуры сущностей (vb.net) - PullRequest
3 голосов
/ 10 января 2012

Мне нужно захватить только одну строку и вывести ее свойства name и details в боковой ящик на моей странице.

До сих пор я придумал это, которое не работает и выдает ошибки приведения междуи список.

Public Shared Function GetOneRow() As String
    Dim db As New Model.Entities
    Dim rowCount As Integer = (From t In db.Table Select t).Count
    Dim randomNumber As Integer = New Random().Next(rowCount)
    Dim query = (From t In db.Table Select t Where t.id = randomNumber).FirstOrDefault
    Dim rowList As New List(Of Model.Table)
    rowList.Add(query)
    Dim htmlString As New StringBuilder
    htmlString.Append("<h1>" & rowList(0).name.ToString & "</h1>")
    htmlString.Append("<p>" & rowList(0).details.ToString & "</p>")
    Return htmlString.ToString
End Function

Также пытались:

Public Shared Function GetOneRow() As String
    Dim db As New Model.Entities
    Dim query = From t In db.Table Select t
    Dim count As Integer = query.Count
    Dim index As Integer = New Random().Next(count)
    Dim list As New List(Of Model.Table)
    list.AddRange((query.Skip(index).FirstOrDefault))
    Dim htmlstring As New StringBuilder
    htmlstring.Append("<h1>" & list(0).name.ToString & "</h1>")
    htmlstring.Append("<p>" & list(0).details.ToString & "</p>")
    Return htmlstring.ToString
End Function

Ошибка здесь: Метод «Пропустить» поддерживается только для отсортированного ввода в LINQ to Entities.Метод 'OrderBy' должен быть вызван перед методом 'Пропустить'

Есть ли более простой способ выбрать одну случайную строку из таблицы и получить ее свойства name и details в мой stringbuilder?

Заранее большое спасибо за любую помощь.

1 Ответ

3 голосов
/ 10 января 2012

следующий код работает для моего в C #, извините, я не очень хорош в VB

    var qry = From t In db.Table Select t;
    int count = qry.Count();
    int index = new Random().Next(count);
    return qry.Skip(index).FirstOrDefault();
...