public async Task BoundFunctionSingle() { List <int> expectedResult; using (var dbContext = Fixture.CreateContext()) expectedResult = dbContext.OrderItems.Where(i => (i.Order.Name == "Order 1" || i.Order.Name == "Order 2") && i.Order.Customer.Country == "RU" && i.Order.Customer.Id == 1) .Select(i => i.Id).ToList(); Db.OeDataAdapter dataAdapter = Fixture.OeEdmModel.GetDataAdapter(Fixture.OeEdmModel.EntityContainer); String request = $"Customers('RU',1)/{dataAdapter.DataContextType.Namespace}.BoundFunctionSingle(orderNames=['Order 1','Order 2'])?$expand=Customer,Items&$select=Name"; ODataUri odataUri = Fixture.ParseUri(request); IEdmModel edmModel = Fixture.OeEdmModel.GetEdmModel(odataUri.Path); var parser = new OeParser(odataUri.ServiceRoot, edmModel); var response = new MemoryStream(); await parser.ExecuteQueryAsync(odataUri, OeRequestHeaders.JsonDefault, response, CancellationToken.None).ConfigureAwait(false); response.Position = 0; List <Object> fromOe = new ResponseReader(edmModel).Read(response).Cast <Object>().ToList(); Assert.Equal(expectedResult, fromOe.SelectMany(c => (IEnumerable <dynamic>)((dynamic)c).Items).Select(i => (int)i.Id).OrderBy(id => id)); }