我有一个类型为quote的对象列表,我将其传递给视图并在网格中显示。网格上方有许多下拉列表用于过滤。我想根据网格数据使用不同的有效选项列表填充dropdown
列表。我正在看的是'Created By'。
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&LT ;, 报价&GT;”不包含'ListValue'的定义,不包含 扩展方法'ListValue'接受类型的第一个参数 “IGrouping&LT ;, 报价&GT;”可以找到(你是否错过了使用指令或 装配参考?)
'Quote'有一个'User'对象作为'Created By'我希望DropDownList填充不同的用户samAccountName和DisplayName,而不必重新查询以获取此列表。
我已使用.Distinct()
尝试了.GroupBy()
以及不同版本的代码。
我是MVC
的新手,对lambda表达式来说是新手。非常感谢任何帮助。
答案 0 :(得分:2)
您可以使用GroupBy获取不同的值,然后使用组中的第一个实例来获取您的值。
var x = quotes
.GroupBy(q =>
new
{
q.CreatedBy.samAccountName,
q.CreatedBy.DisplayName,
})
.Select(q =>
new SelectListItem
{
Value = q.First().CreatedBy.samAccountName,
Text = q.First().CreatedBy.DisplayName,
});