public void WhenApplyingSelectionThenReturnsObjectWithOnlySelectedPropertiesAsFields() { var expression = _factory.Create("Number").Compile(); var selection = _items.Select(expression); Assert.True(selection.All(x => x.GetType().GetProperty("Number") != null)); }
public void WhenCreatingSelectExpressionFromXmlMemberOnPropertyThenGetsPropertyValue() { var nameResolver = new MemberNameResolver(); var factory = new SelectExpressionFactory<FakeItem>(nameResolver, new RuntimeTypeProvider(nameResolver)); var items = new[] { new FakeItem { IntValue = 2 } }; var expression = factory.Create("Number"); dynamic result = items.AsQueryable().Select(expression).First(); Assert.AreEqual(2, result.Number); }
public void WhenCreatingSelectExpressionFromDataMemberOnFieldThenGetsFieldValue() { var nameResolver = new MemberNameResolver(); var factory = new SelectExpressionFactory<FakeItem>(nameResolver, new RuntimeTypeProvider(nameResolver)); var items = new[] { new FakeItem { StringValue = "test" } }; var expression = factory.Create("Text"); dynamic result = items.AsQueryable().Select(expression).First(); Assert.AreEqual("test", result.Text); }
public void WhenCreatingSelectExpressionFromXmlMemberOnPropertyThenGetsPropertyValue() { var nameResolver = new MemberNameResolver(); var factory = new SelectExpressionFactory <FakeItem>(nameResolver, new RuntimeTypeProvider(nameResolver)); var items = new[] { new FakeItem { IntValue = 2 } }; var expression = factory.Create("Number"); dynamic result = items.AsQueryable().Select(expression).First(); Assert.AreEqual(2, result.Number); }
public void WhenCreatingSelectExpressionFromDataMemberOnFieldThenGetsFieldValue() { var nameResolver = new MemberNameResolver(); var factory = new SelectExpressionFactory <FakeItem>(nameResolver, new RuntimeTypeProvider(nameResolver)); var items = new[] { new FakeItem { StringValue = "test" } }; var expression = factory.Create("Text"); dynamic result = items.AsQueryable().Select(expression).First(); Assert.AreEqual("test", result.Text); }
/// <summary> /// To the query options. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="odataQueryOptions">The o data query options.</param> /// <returns>QueryOptions{``0}.</returns> public static QueryOptions <T> ToQueryOptions <T>(this ODataQueryOptions <T> odataQueryOptions) { if (odataQueryOptions == null) { return(null); } var nameResolver = new MemberNameResolver(); var selectFactory = new SelectExpressionFactory <T>(nameResolver, new RuntimeTypeProvider(nameResolver)); var filterFactiory = new FilterExpressionFactory(nameResolver, Enumerable.Empty <IValueExpressionFactory>()); var orderFactory = new SortExpressionFactory(nameResolver); return(new QueryOptions <T> { Top = odataQueryOptions.Top?.Value, Skip = odataQueryOptions.Skip?.Value, Select = !string.IsNullOrEmpty(odataQueryOptions.SelectExpand?.RawSelect) ? selectFactory.Create(odataQueryOptions.SelectExpand.RawSelect) : null, Expand = !string.IsNullOrEmpty(odataQueryOptions.SelectExpand?.RawExpand) ? odataQueryOptions.SelectExpand.RawExpand.Split(',').ToList() : null, OrderBy = !string.IsNullOrEmpty(odataQueryOptions.OrderBy?.RawValue) ? orderFactory.Create <T>(odataQueryOptions.OrderBy.RawValue) .Select( description => new SortDescription( description.KeySelector, (SortDirection)description.Direction)) .ToList() : null, Filter = !string.IsNullOrEmpty(odataQueryOptions.Filter?.RawValue) ? filterFactiory.Create <T>(odataQueryOptions.Filter.RawValue) : null }); }