2016-12-09 120 views
1

我取出由數據庫元素的列表中不同文本的下拉列表:如何創建一個包含選項

ViewBag.Id = new SelectList(db.UserRegister, "Id", "SystemCode"); 

和視圖:

@Html.DropDownList("Id", null }) 

下拉的結果我m到處是:

Value | Text 
    1 | James 
    2 | James 
    3 | John 

我要的是:

Value | Text 
    1 | James 
    3 | John 

上面的文字James的價值可能是12,不要緊,我會得到的文本將永遠是James

如何創建一個下拉包含不同Text如圖所示以上?

任何幫助將十分讚賞,謝謝提前:)

+0

如果ID的價值並不重要,則包括ID,所以你可能也只是做'變種名稱= DB是沒有意義的。 YourTable.Select(x => x.Text).Distinct(); ViewBag.Id = new SelectList(names);' –

+1

@StephenMuecke Id的值並不重要,因爲'James'只屬於'1'和'2'而不是'3',因此它不會說'詹姆斯'的價值是'1'還是'2',但它肯定需要成爲其中之一。 –

回答

0

您LINQ查詢需要執行的GroupBy。

db.UserRegister.GroupBy(x => x.SystemCode) 
        .Select(g => new SelectListItem {Value = g.Min(w => w.Id), Text = g.Key}) 
        .ToList(); 

我那麼改變你瀏覽到

@Html.DropDownListFor(x => x.Id, ViewBag.Id);