Как выполнить расширение ODATA в LinqPad

Я использую LINQPad для подключения к службам ODATA в локальной организации CRM, и я не знаю, как выполнять "соединения" или пересекать отношения с помощью LINQPad.

вот мой URL

OrganizationData.svc/New_locationSet?$select=new_state_new_location/new_Region$expand=new_state_new_location

, который работает в браузере. Вот что я делаю в LINQPad:

from l in new_locationSet
from s in l.new_state_new_location
select s.new_Region

но я получаю сообщение об ошибке:

An expression of type 'LINQPad.User.New_state' is not allowed in a subsequent from clause in a query expression with source type 'System.Data.Services.Client.DataServiceQuery<LINQPad.User.New_location>'.  Type inference failed in the call to 'SelectMany'.

какие идеи? Я обнаружил, что документация Linqpad OData крайне отсутствует...

1 ответов


вам просто нужно проецировать то, что вы хотите расширить, например:

from p in Products
select new {p.Name, CategoryName = p.Category.Name}

или

Products.Select(p => new { p.Name, CategoryName = p.Category.Name})

даст

http://services.odata.org/(S(readwrite))/OData/OData.svc/Products()?$expand=Category&$select=Name,Category/Name

на вкладке журнала запросов LinqPad.