从List转换为SelectListItem

时间:2015-03-18 08:43:37

标签: c# asp.net entity-framework

我需要将从DB获取的列表转换为SelectListItem以便显示下拉列表我已尝试过以下代码

public List<SelectListItem> Liste_proprietaire()
{
    List<SelectListItem> selectList = new List<SelectListItem>();
    var maListe = (from p in db.reqopt
                   where (p.categorie.Contains("proprietaire"))
                   select new
                   {
                       str = p.valeur
                   }).ToList();

    foreach (var x in maListe)
    {
        selectList.Add(x);
    }

    return selectList;
}

他们在selectList.Add(x)下给我一个错误,告诉函数Add有无效的参数。

2 个答案:

答案 0 :(得分:1)

x是匿名类的实例(使用new { }创建)。您无法立即将其转换为SelectListItem

你可以自己做到这一点:

selectList.Add(new SelectListItem() { Value = x.str });

或直接从LINQ表达式创建SelectListItem项:

select new SelectListItem()
{
    Value = p.valeur
}

答案 1 :(得分:1)

您必须使用SelectListItem代替anonymous类型。试试这个。

    public List<SelectListItem> Liste_proprietaire()
    {

        List<SelectListItem> selectList = new List<SelectListItem>();

        var maListe = (from p in db.reqopt
                       where (p.categorie.Contains("proprietaire"))

                       select new SelectListItem
                       {
                           Text = p.valeur,
                           Value = p.value //Put your value column here
                       }).ToList();


        foreach (var x in maListe)
        {
            selectList.Add(x);
        }

        return selectList;
    }

注意:您必须相应地更新Value的{​​{1}}属性。