本文整理汇总了C#中OrderByQueryOption.ApplyTo方法的典型用法代码示例。如果您正苦于以下问题:C# OrderByQueryOption.ApplyTo方法的具体用法?C# OrderByQueryOption.ApplyTo怎么用?C# OrderByQueryOption.ApplyTo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OrderByQueryOption
的用法示例。
在下文中一共展示了OrderByQueryOption.ApplyTo方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ApplyInValidOrderbyQueryThrows
public void ApplyInValidOrderbyQueryThrows(string orderbyValue)
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetEdmModel();
var context = new ODataQueryContext(model, typeof(Customer), "Customers");
var orderby = new OrderByQueryOption(orderbyValue, context);
Assert.Throws<ODataException>(() =>
orderby.ApplyTo(ODataQueryOptionTest.Customers));
}
示例2: ApplyTo_NestedProperties_DoesNotHandleNullPropagation_IfExplicitInSettings
public void ApplyTo_NestedProperties_DoesNotHandleNullPropagation_IfExplicitInSettings()
{
// Arrange
var model = new ODataModelBuilder().Add_Customer_EntityType_With_Address().Add_Customers_EntitySet().GetServiceModel();
var orderByOption = new OrderByQueryOption("Address/City asc", new ODataQueryContext(model, typeof(Customer)), null);
var customers = (new List<Customer>{
new Customer { CustomerId = 1, Address = null },
new Customer { CustomerId = 2, Address = new Address { City = "B" } },
new Customer { CustomerId = 3, Address = new Address { City = "A" } }
}).AsQueryable();
ODataQuerySettings settings = new ODataQuerySettings { HandleNullPropagation = HandleNullPropagationOption.False };
// Act & Assert
Assert.Throws<NullReferenceException>(() => orderByOption.ApplyTo(customers, settings).ToArray());
}
示例3: CanApplySkipOrderby
public void CanApplySkipOrderby()
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetServiceModel();
var context = new ODataQueryContext(model, typeof(Customer));
var orderbyOption = new OrderByQueryOption("Name", context, queryTranslator: null);
var skipOption = new SkipQueryOption("1", context);
var customers = (new List<Customer>{
new Customer { CustomerId = 1, Name = "Andy" },
new Customer { CustomerId = 2, Name = "Aaron" },
new Customer { CustomerId = 3, Name = "Alex" }
}).AsQueryable();
IQueryable queryable = orderbyOption.ApplyTo(customers);
queryable = skipOption.ApplyTo(queryable, new ODataQuerySettings());
var results = ((IQueryable<Customer>)queryable).ToArray();
Assert.Equal(2, results.Length);
Assert.Equal(3, results[0].CustomerId);
Assert.Equal(1, results[1].CustomerId);
}
示例4: ApplyToEnums_ReturnsCorrectQueryable
public void ApplyToEnums_ReturnsCorrectQueryable()
{
// Arrange
var builder = new ODataConventionModelBuilder();
builder.EntitySet<EnumModel>("EnumModels");
var model = builder.GetEdmModel();
var context = new ODataQueryContext(model, typeof(EnumModel));
var orderbyOption = new OrderByQueryOption("Flag", context, null);
IEnumerable<EnumModel> enumModels = FilterQueryOptionTest.EnumModelTestData;
// Act
IQueryable queryable = orderbyOption.ApplyTo(enumModels.AsQueryable());
// Assert
Assert.NotNull(queryable);
IEnumerable<EnumModel> actualCustomers = Assert.IsAssignableFrom<IEnumerable<EnumModel>>(queryable);
Assert.Equal(
new int[] { 2, 1, 3 },
actualCustomers.Select(enumModel => enumModel.Id));
}
示例5: CanApplyOrderBy
public void CanApplyOrderBy()
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetServiceModel();
var orderByOption = new OrderByQueryOption("Name", new ODataQueryContext(model, typeof(Customer)));
var customers = (new List<Customer>{
new Customer { CustomerId = 1, Name = "Andy" },
new Customer { CustomerId = 2, Name = "Aaron" },
new Customer { CustomerId = 3, Name = "Alex" }
}).AsQueryable();
var results = orderByOption.ApplyTo(customers).ToArray();
Assert.Equal(2, results[0].CustomerId);
Assert.Equal(3, results[1].CustomerId);
Assert.Equal(1, results[2].CustomerId);
}
示例6: ApplyTo_WithUnTypedContext_Throws_InvalidOperation
public void ApplyTo_WithUnTypedContext_Throws_InvalidOperation()
{
// Arrange
CustomersModelWithInheritance model = new CustomersModelWithInheritance();
ODataQueryContext context = new ODataQueryContext(model.Model, model.Customer);
OrderByQueryOption orderBy = new OrderByQueryOption("ID desc", context);
IQueryable queryable = new Mock<IQueryable>().Object;
// Act & Assert
Assert.Throws<NotSupportedException>(() => orderBy.ApplyTo(queryable),
"The query option is not bound to any CLR type. 'ApplyTo' is only supported with a query option bound to a CLR type.");
}
示例7: ApplyTo_NestedProperties_HandlesNullPropagation_Succeeds
public void ApplyTo_NestedProperties_HandlesNullPropagation_Succeeds()
{
// Arrange
var model = new ODataModelBuilder().Add_Customer_EntityType_With_Address().Add_Customers_EntitySet().GetServiceModel();
var orderByOption = new OrderByQueryOption("Address/City asc", new ODataQueryContext(model, typeof(Customer)));
var customers = (new List<Customer>{
new Customer { CustomerId = 1, Address = null },
new Customer { CustomerId = 2, Address = new Address { City = "B" } },
new Customer { CustomerId = 3, Address = new Address { City = "A" } }
}).AsQueryable();
// Act
var results = orderByOption.ApplyTo(customers).ToArray();
// Assert
Assert.Equal(1, results[0].CustomerId);
Assert.Equal(3, results[1].CustomerId);
Assert.Equal(2, results[2].CustomerId);
}
示例8: OrderByDuplicateItThrows
public void OrderByDuplicateItThrows()
{
// Arrange
var context = new ODataQueryContext(EdmCoreModel.Instance, typeof(int));
var orderbyOption = new OrderByQueryOption("$it, $it", context);
// Act
Assert.Throws<ODataException>(
() => orderbyOption.ApplyTo(Enumerable.Empty<int>().AsQueryable()),
"Multiple '$it' nodes are not supported in '$orderby'.");
}
示例9: OrderByDuplicatePropertyThrows
public void OrderByDuplicatePropertyThrows()
{
// Arrange
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetServiceModel();
var context = new ODataQueryContext(model, typeof(Customer));
var orderbyOption = new OrderByQueryOption("Name, Name", context);
// Act
Assert.Throws<ODataException>(
() => orderbyOption.ApplyTo(Enumerable.Empty<Customer>().AsQueryable()),
"Duplicate property named 'Name' is not supported in '$orderby'.");
}
示例10: CanApplyOrderByDescThenByDesc
public void CanApplyOrderByDescThenByDesc()
{
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetServiceModel();
var orderByOption = new OrderByQueryOption("Name desc,Website desc", new ODataQueryContext(model, typeof(Customer)));
var customers = (new List<Customer>{
new Customer { CustomerId = 1, Name = "ACME", Website = "http://www.acme.net" },
new Customer { CustomerId = 2, Name = "AAAA", Website = "http://www.aaaa.com" },
new Customer { CustomerId = 3, Name = "ACME", Website = "http://www.acme.com" }
}).AsQueryable();
var results = orderByOption.ApplyTo(customers).ToArray();
Assert.Equal(1, results[0].CustomerId);
Assert.Equal(3, results[1].CustomerId);
Assert.Equal(2, results[2].CustomerId);
}
示例11: ApplyTo_PropertyAliased_IfEnabled
public void ApplyTo_PropertyAliased_IfEnabled(bool modelAliasing, string propertyName)
{
// Arrange
var builder = new ODataConventionModelBuilder { ModelAliasingEnabled = modelAliasing };
builder.EntitySet<PropertyAlias>("PropertyAliases");
var model = builder.GetEdmModel();
var context = new ODataQueryContext(model, typeof(PropertyAlias));
var orderByOption = new OrderByQueryOption(propertyName, context);
IEnumerable<PropertyAlias> propertyAliases = FilterQueryOptionTest.PropertyAliasTestData;
// Act
IQueryable queryable = orderByOption.ApplyTo(propertyAliases.AsQueryable());
// Assert
Assert.NotNull(queryable);
IEnumerable<PropertyAlias> actualCustomers = Assert.IsAssignableFrom<IEnumerable<PropertyAlias>>(queryable);
Assert.Equal(
new[] { "abc", "def", "xyz" },
actualCustomers.Select(propertyAlias => propertyAlias.FirstName));
}
示例12: CanApplyOrderBy_WithNestedParameterAlias
public void CanApplyOrderBy_WithNestedParameterAlias()
{
// Arrange
var model = new ODataModelBuilder().Add_Customer_EntityType().Add_Customers_EntitySet().GetServiceModel();
var parser = new ODataQueryOptionParser(
model,
model.FindType("System.Web.OData.Builder.TestModels.Customer"),
model.FindDeclaredNavigationSource("Default.Container.Customers"),
new Dictionary<string, string> { { "$orderby", "@p1" }, { "@p2", "Name" }, { "@p1", "@p2" } });
var orderByOption = new OrderByQueryOption("@p1", new ODataQueryContext(model, typeof(Customer)), parser);
var customers = (new List<Customer>{
new Customer { CustomerId = 1, Name = "Andy" },
new Customer { CustomerId = 2, Name = "Aaron" },
new Customer { CustomerId = 3, Name = "Alex" }
}).AsQueryable();
// Act
var results = orderByOption.ApplyTo(customers).ToArray();
// Assert
Assert.Equal(2, results[0].CustomerId);
Assert.Equal(3, results[1].CustomerId);
Assert.Equal(1, results[2].CustomerId);
}
示例13: CanApplyOrderBy_WithParameterAlias
public void CanApplyOrderBy_WithParameterAlias()
{
// Arrange
var model = new ODataModelBuilder().Add_Customer_EntityType_With_Address().Add_Address_ComplexType().GetServiceModel();
var parser = new ODataQueryOptionParser(
model,
model.FindType("System.Web.OData.Builder.TestModels.Customer"),
model.FindDeclaredNavigationSource("Default.Container.Customers"),
new Dictionary<string, string> { { "$orderby", "@q desc,@p asc" }, { "@q", "Address/HouseNumber" }, { "@p", "CustomerId" } });
var orderByOption = new OrderByQueryOption("@q desc,@p asc", new ODataQueryContext(model, typeof(Customer)), parser);
var customers = (new List<Customer>{
new Customer { CustomerId = 1, Address = new Address{HouseNumber = 2}},
new Customer { CustomerId = 2, Address = new Address{HouseNumber = 1}},
new Customer { CustomerId = 3, Address = new Address{HouseNumber = 3}},
new Customer { CustomerId = 4, Address = new Address{HouseNumber = 2}},
new Customer { CustomerId = 5, Address = new Address{HouseNumber = 1}},
}).AsQueryable();
// Act
var results = orderByOption.ApplyTo(customers).ToArray();
// Assert
Assert.Equal(3, results[0].CustomerId);
Assert.Equal(1, results[1].CustomerId);
Assert.Equal(4, results[2].CustomerId);
Assert.Equal(2, results[3].CustomerId);
Assert.Equal(5, results[4].CustomerId);
}