Существуют ли в контексте C # в .Net 4.0 какие-либо встроенные объекты, реализующие IQueryable<T>
?
Какие типы с возможностью создания экземпляров, реализующие IQueryable ‹T›, доступны в .Net 4.0?
Ответы (3)
IQueryable
объекты создаются поставщиками запросов (например, LINQ to SQL, LINQ to Entities / Entity Framework и т. д.). Практически ничто из того, что вы можете создать с new
в базовой платформе .NET Framework, не реализует IQueryable.
IQueryable
- это интерфейс, предназначенный для создания поставщиков запросов, которые позволяют использовать библиотеку LINQ во внешнем хранилище данных путем создания дерева выражений с возможностью синтаксического анализа. По своей природе Queryables требует контекста - информации о том, что именно вы запрашиваете. Использование new
для создания любого типа IQueryable, независимо от того, возможно ли это, далеко не продвинется.
При этом любой IEnumerable
можно преобразовать в IQueryable
с помощью метода расширения AsQueryable()
. Это создает внешне похожую, но функционально очень конструкцию за кулисами, как при использовании методов LINQ против простого IEnumerable
объекта. Это, вероятно, самый многочисленный источник запросов, к которому у вас есть доступ без настройки фактического поставщика IQueryable. Это изменение очень полезно для модульного тестирования алгоритмов на основе LINQ, поскольку вам не нужно фактическое хранилище данных, а только список данных в памяти, которые могут его имитировать.
AsQueryable()
.
- person one.beat.consumer; 07.02.2012
Что ж, ваш вопрос немного странный ... но я верю, что если вы посмотрите на интерфейс в Reflector, он предоставит вам список разработчиков в загруженных сборках.
В качестве оговорки я не использовал Reflector, так как он был платным, поэтому я могу ошибаться.
EntityCollection, как и EnumerableQuery.
Не то чтобы я думаю, что что-то из этого ни к чему вас приведет. Чтобы помочь, нам нужно знать, что вы действительно пытаетесь решить. Если вы пишете поставщика LINQ, вам следует прочитать следующее: http://msdn.microsoft.com/en-us/library/bb546158.aspx.
Они рекомендуют написать свою собственную реализацию.
DbQuery<T>
, DbSet<T>
и т. Д., Но я не уверен, что является общедоступным.
- person nawfal; 06.12.2018