2012-02-20 22 views
4

MVC3を使用して、私はStudent Repository(プロジェクト内)とStudentService(別のプロジェクト内)を持っています。このサービスでは、dbテーブルにあるすべての生徒を返す関数を作成します。これは私のためにやることの新しいやり方なので、ちょっと新しいです。次のGetAllStudents関数で、すべてを選択するために構文を変更する方法を教えてください。リポジトリ内IQueryableを使用してすべてを選択する方法

:サービスで

 namespace SpeakOut.Data 
{ 
    public class StudentRepository 
{ 
    SpeakOutDataContext context; 
    private Table<StudentEntity> table; 
    public StudentRepository() 
    { 
     context = new SpeakOutDataContext(); 
     table = context.GetTable<StudentEntity>(); 
    } 


    public IQueryable<Student> Select() 
    { 
     return table.Select(x => new Student 
           { 
            WNumber = x.WNumber, 
            CatalogueYear = x.CatalogueYear, 
            Standing = x.Standing 
           }); 
    } 
} 

}

namespace SpeakOut.Services 
    { 
    public class StudentService 
{ 
    private StudentRepository repository; 
    public StudentService() 
    { 
     repository = new StudentRepository(); 

    } 

    public IQueryable<Student> GetAllStudents() 
    { 
     return repository.Select().All(x => x.FirstName) ; //**This line is where I don't know how I would call all the students** 
    } 


} 

}

+1

ああ、私はちょうど返信repositry.Select() – TMan

答えて

2
public IQueryable<Student> GetAllStudents() 
{ 
    return repository.Select(); 
} 

単にパススルー方法上記のコード。唯一の利点は、サービスの背後にあるリポジトリを隠し、おそらくより良い名前を付けることです。

この時点では、データは取得されていません。 .ToList()が呼び出されたときなどに、IQuerableが使用されるまで、データの収集は延期されます。 IQuerablyeのままにしておくと、追加のフィルタと並べ替え順序をコードの下にさらに追加することができます。これらの追加は、LINQプロバイダによって使用されます。

+0

haha​​ yeaと言うことができませんでした待っています。私はその1つに難しいと思っていた..私はダミーです。ありがとう! – TMan

2

空白だけを選択する必要はありません.AsQueryableを呼び出すだけで、IQueryableとして 'table'を返すことができます。

関連する問題