2015-04-01 88 views
1

我有一個選擇列表在我的asp.net MVC 5.2網絡應用程序與數據庫的所有項目。 MVC 5.2允許使用<optgroup>。現在我想要使用Type(string)屬性的optgroups。這個語法怎麼樣?除了.group部分以外,一切正常。我真的不知道如何做到這一點。SelectList在ASP.NET MVC 5.2中的OptGroup

的代碼創建選擇列表:

Public Shared Function getNameList() As IEnumerable(Of SelectListItem) 
    Dim DB As New ModelDB 
    Return DB.Things.ToList().[Select](Function(item) New SelectListItem() With { 
                .Text = item.Name, 
                .Value = item.ID, 
                .Group = item.Type}) 'ERROR in this line 
End Function 

錯誤是:類型的

值 'STRING' 不能被轉換爲 'System.Web.Mvc.SelectListGroup'。

回答

2

想我找到了解決的努力小時後:

Public Shared Function getNameList() As IEnumerable(Of SelectListItem) 
    Dim DB As New ModelDB 
    'sort alphabetically 
    Dim sortList As IEnumerable(Of Model) = From item In DB.Model.ToList() Order By item.Name Order By item.Type 
    'create list of SelectListGroup 
    Dim OptGroups As List(Of SelectListGroup) = sortList.Select(Function(item) item.Type).Distinct().Select(Function(type) New SelectListGroup With {.Name = type}).ToList() 
    'define selectList 
    Dim selectList As IEnumerable(Of SelectListItem) = sortList.[Select](Function(item) New SelectListItem() With { 
              .Text = item.Name, 
              .Value = item.ID, 
              .Group = OptGroups.First(Function(type) type.Name = item.Type)}) 

    Return selectList 
End Function 

我希望有人能夠從這些代碼中獲益。