2014-02-05 1 views
1

저는 LINQ를 처음 사용하기 때문에 변환에 몇 가지 문제가 있습니다. 마지막 이름 앞에 알파벳순으로 이름이있는 모든 학생을 찾는 방법을 작성해야합니다.LINQ 변환 문제

static Student[] FindAllFirstNameBeforeSecond(Student[] students) 
{ 
    Student[] newStudents = 
     from student in students 
     where student.FirstName.CompareTo(student.LastName) < 0 
     select student; 

    return newStudents; 
} 

나는이 오류 받고 있어요 :

Cannot implicitly convert type 
'System.Collections.Generic.IEnumerable<ConsoleApplication2.Student>' 
to 'ConsoleApplication2.Student[]'. 
An explicit conversion exists (are you missing a cast?) 

가 내가 뭘 잘못에 대한 몇 가지 도움말을 얻을 수를 여기 내 코드는?

답변

4

Linq 쿼리는 IEnumerable<Student> 유형의 결과를 반환합니다. 당신은 배열로 변환해야합니다

static Student[] FindAllFirstNameBeforeSecond(Student[] students) 
{ 
    IEnumerable<Student> newStudents = 
     from student in students 
     where student.FirstName.CompareTo(s.LastName) < 0 
     select student; 

    return newStudents.ToArray(); 
} 

BTW 람다 구문은이 경우 더 컴팩트 :

또한
static Student[] FindAllFirstNameBeforeSecond(Student[] students) 
{ 
    return students.Where(s => s.FirstName.CompareTo(student.LastName) < 0) 
        .ToArray(); 
} 

사용할 수 s.FirstName < s.LastNameArray.FindAll (당신은 배열로 결과를 원하는 경우) :

static Student[] FindAllFirstNameBeforeSecond(Student[] students) 
{ 
    return Array.FindAll(students, s => s.FirstName < s.LastName); 
} 
+1

네, 작동합니다. 도와 주셔서 감사합니다 ! –