ASP.NET:从数据库中的值生成ListBoxItems

时间:2011-08-10 16:35:25

标签: asp.net asp.net-mvc database linq selectlistitem

我想填充一个列表框,所以我必须定义一个ListBoxItem数组。 数据存储在数据库中。

这是我原来的方法:

public IEnumerable<String> GiveStudentsNormalAsString(int lesson, int class)
    {
        Lesson l = giveLesson(lesson);
        Class c = GiveClass(l, class);
        return (from s in c.Students
                orderby s.Name, s.FirstName
                select s.Name);
    }

所以“班级”包含学生名单(导航财产)。 我想要做的不是返回一个IEnumerable的字符串,而是一个IEnumerable的SelectListItems。

我已经开始了:

public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class)
    {
        Lesson l = giveLesson(lesson);
        Class c = GiveClass(l, class);
        return .Select(student => new SelectListItem
        {
            Text = ...
            Value = ...
        };
    }

但是我需要写什么作为文本和价值?例如,我希望学生编号作为值,我该怎么做?

这是我的edmx: EDMX 1

1 个答案:

答案 0 :(得分:0)

在构建student

时,您只需参考SelectListItem变量
public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class)
{
    Lesson l = giveLesson(lesson);
    Class c = GiveClass(l, class);
    return c.Students.Select(student => new SelectListItem
    {
        Text = student.Name,
        Value = student.Number.ToString()
    });
}

当然,如果您愿意,也可以使用LINQ语法编写:

public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class)
{
    Lesson l = giveLesson(lesson);
    Class c = GiveClass(l, class);
    return (from student in c.Students
            select new SelectListItem
            {
                Text = student.Name,
                Value = student.Number.ToString()
            });
}