Преобразование из IEnumerable в Queryable в операторе select? - PullRequest
3 голосов
/ 22 июня 2010

У меня есть хранилище базы данных с кучей функций доступа.Теперь я хочу создать поддельный репозиторий, который предоставляет аналогичную функциональность для юнит-тестов.В отличие от реального репозитория, этот использует простые списки вместо сгенерированных классами моделей linqtosql.

Большинство фальшивых функций репозитория выглядят точно так же, как и реальные, только с дополнительным ToQueryable () в конце.Тем не менее, у меня теперь есть один, который, кажется, требует более сложного броска.

   public class FakeUserRepository : IUserRepository {
          public IQueryable<SelectListItem> GetRecords(int userid) {
                    // fake_table is a list
                    return (from a in fake_table select
                    new SelectListItem {
                        Value = a.ID.ToString(),
                        Text = a.Name
                    });
          }
    }

В настоящее время выдается ошибка «Не удается неявно преобразовать тип» System.Collections.Generic.IEnumerable.) Я не удивлен сообщением об ошибке, но не знаю, как исправить приведение.*

Ответы [ 3 ]

8 голосов
/ 22 июня 2010

вы могли бы сделать:

   public class FakeUserRepository : IUserRepository {
          public IQueryable<SelectListItem> GetRecords(int userid) {
                    // fake_table is a list
                    return (from a in fake_table select
                    new SelectListItem {
                        Value = a.ID.ToString(),
                        Text = a.Name
                    }).AsQueryable<SelectListItem>;
          }
    }
5 голосов
/ 22 июня 2010

Для этого в IEnumerable есть метод расширения .AsQueryable (), поэтому добавьте его в возвращаемый запрос.

return (from ..).AsQueryable();
3 голосов
/ 22 июня 2010

Просто добавление .AsQueryable () в конце вашего запроса linq заставит его работать.

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