2014-04-09 3 views
1

C# 클래스에서 메서드를 작성하고 있습니다. 데이터베이스 Linq 쿼리를 사용하고 있습니다. 결과가 메서드에서 반환되기를 원합니다. 다음 코드를 사용하고 있지만 오류가 발생합니다.익명 형식을 강력한 형식으로 반환

class getCourses 
{ 
    public string Courseid { get; set; } 
    public string CourseName { get; set; } 
} 

public List<getCourses> GetCourses() 
    { 
     List<getCourses> L_courses = new List<getCourses>(); 
     L_courses = (from Cr in _er.Courses 
          select new 
          { 
           Courseid = Cr.CourseID, 
           CourseName = Cr.CourseName, 
          }).ToList(); 
    } 
+0

'new '단어 뒤에'getCourses'를 추가하십시오. – Jonesopolis

+1

컴파일되지 않습니다.'return L_courses;'가 없습니다. –

답변

4

당신은 당신의 반환 유형에 따라 List<getCourses>하는 강력한 형식의 목록을 작성해야합니다 익명 types.You의 목록을 만들 수 있습니다. select newselect new getCourses으로 변경하십시오. 또한 목록 (L_courses)에 대한 또 다른 변수를 만드는 것은 완전히 불필요합니다. 반환하기 전에 목록을 가지고 아무것도하지 않으려는 경우 직접 목록을 반환 할 수 있습니다. 당신은이

4

사용하는 클래스, 익명의 유형 작성하지 그것을 말해 : 필드가 일치해서

new { 
    Courseid = Cr.CourseID, 
    CourseName = Cr.CourseName, } 

는 익명의 유형입니다

public List<getCourses> GetCourses() 
{ 
    return (from Cr in _er.Courses 
      select new getCourses 
        { 
         Courseid = Cr.CourseID, 
         CourseName = Cr.CourseName, 
        }).ToList(); 
} 
1

음을 (getCourses는 것을 의미하지 않는다 그것은 getCourses입니다). .ToList() 위로 커서를 가져 가면 intelisense를 사용하여 반환 된 유형을 확인할 수 있습니다. 아마도 다음을 사용해야합니다 :

new getCources() { 
    Courseid = Cr.CourseID, 
    CourseName = Cr.CourseName, } 
0

2 개의 대답.

먼저 당신이 쓸 수 있습니다 (다른 답변에 돼지 백업) :

public List<getCourses> GetCourses() { 
    return _er.Courses.Select(c => 
     new getCourses { 
      Courseid = c.CourseID, 
      CourseName = c.CourseName 
     }).ToList(); 
} 

두 번째 방법 ... _er.Courses는이 같은 왜 안 뭔가를 처리하고자하는 개체가 이미 있기 때문에. .. _er.Courses가 Course 객체의 목록이라고 가정합니다. 그럼 당신은 할 수 있습니다 :

는 단순히 같은 것을 할 수있는 그런
public Course : ICourseOverview { 
    // properties 
} 

public interface ICourseOverview { 
    public int CourseId { get; } 
    public string CourseName { get; } 
} 

: 당신이 다음이 클래스의 포인트가 무엇인지 논란의 여지가 있다고 한 경우

public IEnumerable<ICourseOverview> GetCourses() { 
    return (IEnumerable<ICourseOverview>)_er.Courses; 
} 

을하지만 (범위에 따라 그 응용 프로그램은 _er 및 _er.Courses에 있습니다).

관련 문제