C# 从IEnumerable中选择不同的ListItem

C# 从IEnumerable中选择不同的ListItem,c#,asp.net,linq,model-view-controller,C#,Asp.net,Linq,Model View Controller,我有一个quote类型的对象列表,我将其传递到视图并显示在网格中。网格上方有许多下拉列表用于筛选。我想根据网格的数据,用有效选项的不同列表填充下拉列表。我现在看到的是“创建人” public IEnumerable<SelectListItem> GetCreatedBy(IEnumerable<Quote> quotes) { var x = quotes.GroupBy(q => new { ListValue = q.Cre

我有一个quote类型的对象列表,我将其传递到视图并显示在网格中。网格上方有许多下拉列表用于筛选。我想根据网格的数据,用有效选项的不同列表填充
下拉列表。我现在看到的是“创建人”

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;
    }
public IEnumerable GetCreatedBy(IEnumerable引号)
{
var x=quotes.GroupBy(q=>new{
ListValue=q.CreatedBy.samAccountName,
ListText=q.CreatedBy.DisplayName})
.Select(组=>new SelectListItem{
Value=group.ListValue,
Text=group.ListText});
返回x;
}
我得到的错误是:

“iGroup”不包含“ListValue”的定义,也不包含 扩展方法“ListValue”接受类型为的第一个参数 找不到“iGroup”(您是否缺少using指令或 装配参考?)

“Quote”有一个“User”对象作为“Created By”,我想要一个DropDownList,其中填充了不同的用户samAccountName和DisplayName,无需重新查询即可获得此列表

我用
.GroupBy()
尝试了
.Distinct()
和上述代码的不同版本


我不熟悉
MVC
,也不熟悉lambda表达式。非常感谢您的帮助。

您可以使用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,
        });

您可以使用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,
        });

您需要指定要分组的列。请参考GroupBy语法。谢谢Siva。我看到了这个例子,我认为这和我想做的不同。我尝试了“var x=quotes.GroupBy(q=>q.CreatedBy.samAccountName,q=>q.CreatedBy.DisplayName,(key,g)=>new-SelectListItem{Value=key,Text=g.First().ToString()};”。这给了我一个所有用户的列表,但其中有重复的用户。您需要指定一个要分组的列。请参考GroupBy语法。谢谢Siva。我看到了这个例子,我认为这和我想做的不同。我尝试了“var x=quotes.GroupBy(q=>q.CreatedBy.samAccountName,q=>q.CreatedBy.DisplayName,(key,g)=>new-SelectListItem{Value=key,Text=g.First().ToString()};”。这给了我一个所有用户的列表,但是其中有重复的用户。