0

我想填充一个列表框,所以我必须定义一个 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,而是 SelectListItems 的 IEnumerable。

我已经开始了:

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

4

1 回答 1

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()
            });
}
于 2011-08-10T16:38:46.070 回答