2014-09-18 6 views
0

Я действительно новичок в vb и linq, так что извините, если я полностью ошибаюсь. У меня есть страница, представляющая собой подробный вид проекта. В нем я хочу отобразить список всех связанных проектов. Это то, что у меня есть .. (который я предполагаю, что это очень неправильно)Показать список из базы данных с помощью linq в vb.net

Private Sub divLinks_OnLoad(sender As Object, e As EventArgs) Handles lbLinks.DataBinding 
    Dim Link1 = (From a In ods.groups 
       Where (a.PID = PID_Number) 
       Select a).ToList 

    dvLinks = Link1.Text 
End Sub 

Я даже не уверен, если я должен поместить код позади моего DIV или lisbox или что-то. Я уверен, что это супер просто, я просто мозг мертв прямо сейчас я думаю ...

EDIT

Я попробовал это, без ошибок, но до сих пор ничего

Private Sub dvLinks_Load(sender As Object, e As EventArgs) Handles dvLinks.Load 
    Call LoadLinks() 
End Sub 

Public Function LoadLinks() 
    Dim Link1 = (From a In ods.groups 
    Where (a.PID = PID_Number) 
    Select a).ToList 

    Return Link1.Count 

End Function 
+0

Медленно. 'Link1' - его объект типа List (Of T)', не существует свойства с именем 'Text'. Но у него есть свойство (действительная функция, а не свойство) с именем «Count», например. поэтому попробуйте написать: 'dvLinks = Link1.Count'. Таким образом, мы будем знать, работал ли запрос БД. – dovid

+0

Отлично. Сообщение об ошибке выводит нас далеко. она говорит, что мы пытаемся поместить номер переменной типа HtmlGenericControl. Google я нахожу в [MSDN] (http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlgenericcontrol (v = vs.110) .aspx), что этот объект имеет много свойств , например 'InnerText'. Попытайтесь поместить там номер, например: 'dvLinks.InnerText = Link1.Count' – dovid

+0

Отлично! Это сработало ... он отобразил номер 2 (и есть только две вещи, которые соответствуют запросу). Каким будет следующий шаг, чтобы отобразить их? – kelseywhiting

ответ

0

Вы не можете возвращения перейдите в список в цикле (и, фактически, вам не нужно экспортировать «ToList»).

Например:

Private Sub dvLinks_Load(sender As Object, e As EventArgs) Handles dvLinks.Load 
    Dim Link1 = From a In ods.groups 
       Where (a.PID = PID_Number) 
       Select a 

    For Each group In Link1 
     dvLinks.InnerText += group 
    End For 
End Sub 

Я предполагаю, что перевод Группы в строку (на самом деле с помощью метода ToString) возвращает что-то «интересное». Если нет, то вы можете получить доступ к собственности, как: group.Name

Это для простоты, но с точки зрения производительности это не рекомендуется, чтобы сцепить строку снова и снова (она создается заново каждый раз, когда в другом месте Память). Лучше всего написать на LINQ Как это:

Dim Link1 = From a In ods.groups 
       Where (a.PID = PID_Number) 
       Select a.ToString() 

    dvLinks.InnerText = String.Join("<br/>", Link1.ToArray()) 

(это займет некоторое время, чтобы понять, но не слишком сильно).

Смежные вопросы