|
1 |
| -using System.Collections.Generic; |
| 1 | +using NFluent; |
| 2 | +using System.Collections.Generic; |
2 | 3 | using System.Linq.Dynamic.Core.CustomTypeProviders;
|
3 | 4 | using System.Linq.Dynamic.Core.Exceptions;
|
4 | 5 | using System.Linq.Dynamic.Core.Tests.Helpers.Models;
|
5 | 6 | using System.Linq.Expressions;
|
6 | 7 | using System.Reflection;
|
7 |
| -using NFluent; |
8 | 8 | using Xunit;
|
9 | 9 | using User = System.Linq.Dynamic.Core.Tests.Helpers.Models.User;
|
10 | 10 |
|
@@ -256,7 +256,7 @@ public void DynamicExpressionParser_ParseLambda_WithStructWithEquality(string qu
|
256 | 256 | var qry = testList.AsQueryable();
|
257 | 257 |
|
258 | 258 | // Act
|
259 |
| - ulong expectedX = (ulong) long.MaxValue + 3; |
| 259 | + ulong expectedX = (ulong)long.MaxValue + 3; |
260 | 260 |
|
261 | 261 | query = string.Format(query, expectedX);
|
262 | 262 | LambdaExpression expression = DynamicExpressionParser.ParseLambda(qry.GetType(), null, query);
|
@@ -613,6 +613,40 @@ public void DynamicExpressionParser_ParseLambda_StringLiteralEmbeddedQuote_Retur
|
613 | 613 | Assert.Equal(expectedRightValue, rightValue);
|
614 | 614 | }
|
615 | 615 |
|
| 616 | + /// <summary> |
| 617 | + /// @see https://github.com/StefH/System.Linq.Dynamic.Core/issues/294 |
| 618 | + /// </summary> |
| 619 | + [Fact] |
| 620 | + public void DynamicExpressionParser_ParseLambda_MultipleLambdas() |
| 621 | + { |
| 622 | + var users = new[] |
| 623 | + { |
| 624 | + new { name = "Juan", age = 25 }, |
| 625 | + new { name = "Juan", age = 25 }, |
| 626 | + new { name = "David", age = 12 }, |
| 627 | + new { name = "Juan", age = 25 }, |
| 628 | + new { name = "Juan", age = 4 }, |
| 629 | + new { name = "Pedro", age = 2 }, |
| 630 | + new { name = "Juan", age = 25 } |
| 631 | + }.ToList(); |
| 632 | + |
| 633 | + IQueryable query; |
| 634 | + |
| 635 | + // One lambda |
| 636 | + string res1 = "[{\"Key\":{\"name\":\"Juan\"},\"nativeAggregates\":{\"ageSum\":104},\"Grouping\":[{\"name\":\"Juan\",\"age\":25},{\"name\":\"Juan\",\"age\":25},{\"name\":\"Juan\",\"age\":25},{\"name\":\"Juan\",\"age\":4},{\"name\":\"Juan\",\"age\":25}]},{\"Key\":{\"name\":\"David\"},\"nativeAggregates\":{\"ageSum\":12},\"Grouping\":[{\"name\":\"David\",\"age\":12}]},{\"Key\":{\"name\":\"Pedro\"},\"nativeAggregates\":{\"ageSum\":2},\"Grouping\":[{\"name\":\"Pedro\",\"age\":2}]}]"; |
| 637 | + query = users.AsQueryable(); |
| 638 | + query = query.GroupBy("new(name as name)", "it"); |
| 639 | + query = query.Select("new (it.Key as Key, new(it.Sum(x => x.age) as ageSum) as nativeAggregates, it as Grouping)"); |
| 640 | + Assert.Equal(res1, Newtonsoft.Json.JsonConvert.SerializeObject(query)); |
| 641 | + |
| 642 | + // Multiple lambdas |
| 643 | + string res2 = "[{\"Key\":{\"name\":\"Juan\"},\"nativeAggregates\":{\"ageSum\":0,\"ageSum2\":104},\"Grouping\":[{\"name\":\"Juan\",\"age\":25},{\"name\":\"Juan\",\"age\":25},{\"name\":\"Juan\",\"age\":25},{\"name\":\"Juan\",\"age\":4},{\"name\":\"Juan\",\"age\":25}]},{\"Key\":{\"name\":\"David\"},\"nativeAggregates\":{\"ageSum\":0,\"ageSum2\":12},\"Grouping\":[{\"name\":\"David\",\"age\":12}]},{\"Key\":{\"name\":\"Pedro\"},\"nativeAggregates\":{\"ageSum\":0,\"ageSum2\":2},\"Grouping\":[{\"name\":\"Pedro\",\"age\":2}]}]"; |
| 644 | + query = users.AsQueryable(); |
| 645 | + query = query.GroupBy("new(name as name)", "it"); |
| 646 | + query = query.Select("new (it.Key as Key, new(it.Sum(x => x.age > 25 ? 1 : 0) as ageSum, it.Sum(x => x.age) as ageSum2) as nativeAggregates, it as Grouping)"); |
| 647 | + Assert.Equal(res2, Newtonsoft.Json.JsonConvert.SerializeObject(query)); |
| 648 | + } |
| 649 | + |
616 | 650 | [Fact]
|
617 | 651 | public void DynamicExpressionParser_ParseLambda_StringLiteralStartEmbeddedQuote_ReturnsBooleanLambdaExpression()
|
618 | 652 | {
|
|
0 commit comments