2011-08-10 4 views
0

ListBox를 채우기를 원하므로 ListBoxItem의 배열을 정의해야합니다. 데이터가 데이터베이스에 저장됩니다.ASP.NET : 데이터베이스의 값에서 ListBoxItems 생성

이 내 원래의 방법입니다 :

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); 
    } 

그래서 "클래스"학생의 목록 (네비게이션 속성)이 포함되어 있습니다. 내가 원하는 것은 String의 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 = ... 
     }; 
    } 

그러나 나는 텍스트 및 가치로 작성해야합니까? 예를 들어, 학생 번호가 Value (가치)로 사용되기를 원한다면 어떻게 할 수 있습니까? 여기

내 edmx입니다 : EDMX 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() 
      }); 
} 
+0

감사합니다. – Lorenzo

+0

하지만 질문이 있습니다 : Value = student.StudentID를 입력하면 int에서 string으로 변환 할 수 없다는 오류가 발생합니다 ... – Lorenzo

+0

@Laurent 왜냐하면 'SelectListItem.Value'는'string'이기 때문에 'student.StudentID'를 먼저 문자열로 변환해야합니다. 그에 따라 코드를 업데이트했습니다. – twoflower

관련 문제