Хобрук: Ваш путь к мастерству в программировании

OData Linq для строки запроса

Я использую веб-API с поддержкой OData Query (ночные), и хотя я знаю, что библиотека WCF дает вам возможность запрашивать URL-адреса службы WCF RIA, я ищу легкий способ создания строк запроса Odata типа как LinqPad, но в более общем плане.

Например, если мы знаем, что служба возвращает определенный тип, например, «ProductDTO», я хочу иметь возможность делать что-то вроде этого:

(from p in ODataSource<ProductDTO>
 where p.Name == "hi"
 select new {p.Model, Name}).ToODataQuery();

Что вернет соответствующие команды $ filter и $ select в виде строки, которую можно добавить к URL-адресу.

Кто-нибудь знает какую-либо библиотеку, которая может делать что-то подобное?

31.10.2012

Ответы:


1

Другой возможный вариант - использовать Simple.OData.Client, как показано здесь: Можно ли использовать эту библиотеку только для генерации URL-адреса запроса?.

11.04.2015

2

Вы можете попробовать следующее: https://github.com/ubergeoff/HollowPoint.Azure

ODataSource.Query()
.Where(t => t.Age >= 16 && t.Age < 33)
.ToODataString();   

Выводит текст запроса OData:

((Age ge 16) and (Age lt 33))
25.10.2018
  • Похоже, это только для хранения таблиц.? 25.10.2018

  • 3

    Я не использовал его, но изучаю аналогичную тему, и похоже, что он должен обеспечивать ту функциональность, которую вы ищете: https://bitbucket.org/jjrdk/linq2rest/wiki/Home

    Вот статья, в которой показано использование его в качестве клиента oData: http://blog.petegoo.com/index.php/2012/03/11/creating-a-net-queryable-client-for-asp-net-web-api-odata-services/

    Основываясь на вики (а не на каком-либо опыте работы с linq2rest), похоже, что это работает в обоих направлениях - выражение LINQ для строки запроса и строка запроса для выражения LINQ.

    07.01.2013
  • Похоже, что это работает в противоположном направлении и анализирует QueryString, переданный в Linq. Я ищу библиотеку javascript / jquery, которая позволяет мне генерировать $ filter = и $ select и т.д. Предпочтительно тот, который действительно хорошо работает с интерфейсами Typescript, чтобы все было строго типизировано .... 02.11.2013
  • О, я ничего не видел о javascript / jquery / typescript в исходном вопросе. 16.12.2013
  • Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.