Как выбрать все, используя IQueryable - PullRequest
6 голосов
/ 20 февраля 2012

Используя MVC3, у меня есть хранилище Student (в проекте) и StudentService (в другом проекте).В сервисе я хочу создать функцию, которая возвращает всех студентов, которые находятся в таблице базы данных.Это новый способ для меня, поэтому я немного новичок.в функции GetAllStudents ниже, Как я могу изменить синтаксис для выбора всех.

В репозитории:

      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**
    }


}

}

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Вам даже не нужно просто пустое Select, вы можете просто вызвать .AsQueryable или просто вернуть 'table' как IQueryable.

2 голосов
/ 20 февраля 2012
public IQueryable<Student> GetAllStudents()
{
    return repository.Select();
}

Код выше только сквозной метод. Единственное преимущество - скрывать хранилище за службой и, возможно, дать ему лучшее имя.

На данный момент данные не были получены. Сбор данных откладывается до использования IQuerable, например, когда вызывается .ToList(). Преимущество оставить его как IQuerablye состоит в том, что дополнительные фильтры и порядки сортировки могут быть добавлены с помощью кода далее по строке. Эти дополнения будут использоваться поставщиком LINQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...