Skip to content

Commit e32ccb3

Browse files
authored
Fix NET35 build + add unit test for OrderBy with IComparer (#561)
1 parent 8d66731 commit e32ccb3

File tree

2 files changed

+33
-10
lines changed

2 files changed

+33
-10
lines changed

src/System.Linq.Dynamic.Core/DynamicClassFactory.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,15 @@ public static class DynamicClassFactory
7272
static DynamicClassFactory()
7373
{
7474
var assemblyName = new AssemblyName(DynamicAssemblyName);
75-
var assemblyBuilder = AssemblyBuilderFactory.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndCollect);
75+
var assemblyBuilder = AssemblyBuilderFactory.DefineDynamicAssembly
76+
(
77+
assemblyName,
78+
#if NET35
79+
AssemblyBuilderAccess.Run
80+
#else
81+
AssemblyBuilderAccess.RunAndCollect
82+
#endif
83+
);
7684

7785
ModuleBuilder = assemblyBuilder.DefineDynamicModule(DynamicModuleName);
7886
}

test/System.Linq.Dynamic.Core.Tests/QueryableTests.OrderBy.cs

+24-9
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,34 @@ namespace System.Linq.Dynamic.Core.Tests
66
{
77
public partial class QueryableTests
88
{
9+
[Fact]
10+
public void OrderBy_Dynamic_IComparer()
11+
{
12+
// Arrange
13+
var testList = User.GenerateSampleModels(2);
14+
var qry = testList.AsQueryable();
15+
16+
// Act
17+
var orderBy = testList.OrderBy(x => x.UserName, StringComparer.OrdinalIgnoreCase).ToArray();
18+
var orderByDynamic = qry.OrderBy("UserName", StringComparer.OrdinalIgnoreCase).ToArray();
19+
20+
// Assert
21+
Assert.Equal(orderBy, orderByDynamic);
22+
}
23+
924
[Fact]
1025
public void OrderBy_Dynamic()
1126
{
12-
//Arrange
27+
// Arrange
1328
var testList = User.GenerateSampleModels(100);
1429
var qry = testList.AsQueryable();
1530

16-
//Act
31+
// Act
1732
var orderById = qry.OrderBy("Id");
1833
var orderByAge = qry.OrderBy("Profile.Age");
1934
var orderByComplex1 = qry.OrderBy("Profile.Age, Id");
2035

21-
//Assert
36+
// Assert
2237
Assert.Equal(testList.OrderBy(x => x.Id).ToArray(), orderById.ToArray());
2338
Assert.Equal(testList.OrderBy(x => x.Profile.Age).ToArray(), orderByAge.ToArray());
2439
Assert.Equal(testList.OrderBy(x => x.Profile.Age).ThenBy(x => x.Id).ToArray(), orderByComplex1.ToArray());
@@ -27,26 +42,26 @@ public void OrderBy_Dynamic()
2742
[Fact]
2843
public void OrderBy_Dynamic_AsStringExpression()
2944
{
30-
//Arrange
45+
// Arrange
3146
var testList = User.GenerateSampleModels(100);
3247
var qry = testList.AsQueryable();
3348

34-
//Act
49+
// Act
3550
var expected = qry.SelectMany(x => x.Roles.OrderBy(y => y.Name)).Select(x => x.Name);
3651
var orderById = qry.SelectMany("Roles.OrderBy(Name)").Select("Name");
3752

38-
//Assert
53+
// Assert
3954
Assert.Equal(expected.ToArray(), orderById.Cast<string>().ToArray());
4055
}
4156

4257
[Fact]
4358
public void OrderBy_Dynamic_Exceptions()
4459
{
45-
//Arrange
60+
// Arrange
4661
var testList = User.GenerateSampleModels(100, allowNullableProfiles: true);
4762
var qry = testList.AsQueryable();
4863

49-
//Act
64+
// Act
5065
Assert.Throws<ParseException>(() => qry.OrderBy("Bad=3"));
5166
Assert.Throws<ParseException>(() => qry.Where("Id=123"));
5267

@@ -56,4 +71,4 @@ public void OrderBy_Dynamic_Exceptions()
5671
Assert.Throws<ArgumentException>(() => qry.OrderBy(" "));
5772
}
5873
}
59-
}
74+
}

0 commit comments

Comments
 (0)