public void Scenario() { TestDbContext.Exec(context => { var dbSet = context.Bug179_Data; dbSet.AddRange(new[] { new Bug179_DataItem { ID = 1, Group = "A", Value = 1 }, new Bug179_DataItem { ID = 2, Group = "A", Value = 3 }, new Bug179_DataItem { ID = 3, Group = "A", Value = null }, new Bug179_DataItem { ID = 4, Group = "B", Value = 5 }, new Bug179_DataItem { ID = 5, Group = "B", Value = null }, }); context.SaveChanges(); var loadResult = DataSourceLoader.Load(dbSet, new SampleLoadOptions { Group = new[] { new GroupingInfo { Selector = "Group", IsExpanded = false } }, GroupSummary = new[] { new SummaryInfo { SummaryType = "avg", Selector = "Value" }, new SummaryInfo { SummaryType = "count" }, new SummaryInfo { SummaryType = "sum", Selector = "Value" } }, TotalSummary = new[] { new SummaryInfo { SummaryType = "sum", Selector = "Value" }, new SummaryInfo { SummaryType = "count" }, new SummaryInfo { SummaryType = "avg", Selector = "Value" } } }); var loadResultGroups = loadResult.data.Cast <ResponseModel.Group>().ToArray(); var referenceGroups = dbSet .GroupBy(i => i.Group) .OrderBy(g => g.Key) .Select(g => new { Avg = g.Average(i => i.Value), Count = g.Count(), Sum = g.Sum(i => i.Value) }) .ToArray(); for (var g = 0; g < 2; g++) { Assert.Equal((decimal)referenceGroups[g].Avg, loadResultGroups[g].summary[0]); Assert.Equal(referenceGroups[g].Count, loadResultGroups[g].summary[1]); Assert.Equal((decimal)referenceGroups[g].Sum, loadResultGroups[g].summary[2]); } Assert.Equal((decimal)dbSet.Sum(i => i.Value), loadResult.summary[0]); Assert.Equal(dbSet.Count(), loadResult.summary[1]); Assert.Equal((decimal)dbSet.Average(i => i.Value), loadResult.summary[2]); }); }
public void Scenario() { TestDbContext.Exec(context => { var dbSet = context.Bug_FindInList_ItemA; dbSet.AddRange(new[] { new Bug_FindInList_DataItemA { ID = 1, Date = DateTime.Now, Text = "qqqq1", Items = new List <Bug_FindInList_DataItemB> { new Bug_FindInList_DataItemB { Id = 1, Name = "b_0011" }, new Bug_FindInList_DataItemB { Id = 2, Name = "b_0012" }, new Bug_FindInList_DataItemB { Id = 3, Name = "b_0013" } } }, new Bug_FindInList_DataItemA { ID = 2, Date = DateTime.Now, Text = "qqqq2", Items = new List <Bug_FindInList_DataItemB> { new Bug_FindInList_DataItemB { Id = 21, Name = "b_0021" }, new Bug_FindInList_DataItemB { Id = 22, Name = "b_0022" }, new Bug_FindInList_DataItemB { Id = 23, Name = "b_0023" } } }, new Bug_FindInList_DataItemA { ID = 3, Date = DateTime.Now, Text = "qqqq3", Items = new List <Bug_FindInList_DataItemB> { new Bug_FindInList_DataItemB { Id = 31, Name = "b_0031" }, new Bug_FindInList_DataItemB { Id = 32, Name = "b_0032" }, new Bug_FindInList_DataItemB { Id = 33, Name = "b_0033" } } } }); context.SaveChanges(); // we implement "any" operator for search in collections var filter = new List <object> { "Items", "any", new List <object> { "Id", ">", "1" } }; var loadResult = DataSourceLoader.Load(dbSet, new SampleLoadOptions { Filter = filter }); /*// 2nd variant: by prepare expression * var queryableData = objectSpace.GetObjectsQuery<ServiceDeskRequest>(); * var parameter = Expression.Parameter(typeof(ServiceDeskRequest), "A"); * var expression = GetNavigationPropertyExpression(parameter, someUserOid, "Group", "Individuals", "Oid"); * var whereCallExpression = Expression.Call( * typeof(Queryable), "Where", new Type[] { queryableData.ElementType }, queryableData.Expression, expression); * var results = queryableData.Provider.CreateQuery<ServiceDeskRequest>(whereCallExpression).Take(10); * foreach (ServiceDeskRequest item in results) * Console.WriteLine(item);*/ var data = (IEnumerable <Bug_FindInList_DataItemA>)loadResult.data; var dataCount = data.Count(); Assert.Equal(2, dataCount); }); }