0
我有一個引用類型的對象列表,我傳遞給視圖並顯示在網格中。網格上方有許多下拉列表用於過濾。我想用基於網格數據的有效選項清單填充dropdown
列表。我正在看的那個是'創造者'。IEnumerable獨特的選擇ListItem
public IEnumerable<SelectListItem> GetCreatedBy(IEnumerable<Quote> quotes)
{
var x = quotes.GroupBy(q => new {
ListValue = q.CreatedBy.samAccountName,
ListText = q.CreatedBy.DisplayName})
.Select(group => new SelectListItem {
Value = group.ListValue,
Text = group.ListText });
return x;
}
我得到的錯誤是:
'IGrouping <, 引用>' 不包含關於 'ListValue' 和無 擴展方法的定義 'ListValue' 接受第一個參數 類型的 'IGrouping <, 引用>' 可以找到(是否缺少using指令或一個 集引用?)
'Quote'有'User'對象作爲'創建者'我想要一個DropDownList填充不同的用戶samAccountName和DisplayName,而不必重新查詢以獲取此列表。
我試過.Distinct()
和上面的代碼與.GroupBy()
不同版本。
我是MVC
的新手,對於lambda表達式來說真的很新穎。任何幫助將非常感激。
你需要指定一個你想要groupby的列。請參閱[本SO](https://stackoverflow.com/questions/7325278/group-by-in-linq)GroupBy語法。 –
感謝Siva。我看到了這個例子,我認爲這與我想要做的不同。我試過'var x = quotes.GroupBy(q => q.CreatedBy.samAccountName,q => q.CreatedBy.DisplayName,(key,g) => new SelectListItem {Value = key,Text = g.First() .ToString()});'。這給了我一個所有用戶的列表,但那裏有重複。 – David