Как преобразовать массив T (IEnumerable <T>) в IQueryable <T>для обработки с помощью LINQ? - PullRequest
3 голосов
/ 03 марта 2011

Я работаю над приложением, использующим сервер WCF (использующий новую бета-версию Mindscape LightSpeed ​​ORM) и использующим службу на клиенте ASP.NET MVC2.Мои объекты отображаются на клиенте в виде массива T или IEnumerable<T>.Я хочу делать классные вещи с данными после их поступления, но синтаксис LINQ требует IQueryable<T>.

Я знаю, что есть способ конвертировать из IEnumerable<T> в IQueryable<T>, но у меня былне повезло, пока ищу его.Кто-нибудь может помочь?

Спасибо, Дейв

Ответы [ 2 ]

6 голосов
/ 03 марта 2011

Ну, я подозреваю, что вы думаете о Queryable.AsQueryable() - но с чего вы взяли, что вам нужно использовать IQueryable<T> для использования LINQ? Преобразование IEnumerable<T> в IQueryable<T> не даст вам большинства преимуществ IQueryable<T>.

LINQ to Objects основан на IEnumerable<T>. Если вы довольны работой с уже полученными данными, это все, что вам нужно.

Если, однако, вы хотите выразить запрос на своем клиенте и сказать серверу WCF выполнить этот запрос (например, выполнить фильтрацию в базе данных или, по крайней мере, на стороне WCF), это , когда вы бы использовали IQueryable<T>. Возможно, вам пригодится мой пост Edulinq о IQueryable<T>. Вам понадобится какой-то способ представления сервиса как IQueryable<T> - и в этот момент вы не в курсе моих знаний WCF.

0 голосов
/ 03 марта 2011

Попробуйте следующий метод: AsQueryable()

...