public Task <IDataSourceResponse <NodeGroupViewModel> > ReadAsync(DataSourceRequest request)
        {
            var responseData = this.DbContext.NodeGroup.Include("Project").Select(ng => ng);

            if (request.ServerFiltering != null)
            {
                var filter    = request.ServerFiltering.FilterCollection.SingleOrDefault(f => f.Field == "ProjectId");
                int projectId = Convert.ToInt32(filter.Value);
                responseData = responseData.Where(ng => ng.ProjectId == projectId);
            }

            IDataSourceResponse <NodeGroupViewModel> response = new DataSourceResponse <NodeGroupViewModel> {
                TotalRowCount = responseData.Count()
            };

            if (request.ServerPaging != null)
            {
                int skip = Math.Max(request.ServerPaging.PageSize * (request.ServerPaging.Page - 1), 0);
                responseData = responseData.OrderBy(p => p.Id).Skip(skip).Take(request.ServerPaging.PageSize);
            }

            var dataCollection = responseData.ToList();

            foreach (var data in dataCollection)
            {
                response.DataCollection.Add(NodeGroupViewModel.NewInstance(data));
            }

            return(Task.FromResult(response));
        }
        public ICollection <NodeGroupViewModel> Read(IFilterInfoCollection serverFiltering)
        {
            ICollection <NodeGroupViewModel> nodeGroups = new List <NodeGroupViewModel>();

            if (serverFiltering != null)
            {
                var filter    = serverFiltering.FilterCollection.SingleOrDefault(f => f.Field == "Id");
                int projectId = Convert.ToInt32(filter.Value);

                var dataCollection = this.DbContext.NodeGroup.Include("Project").Where(ng => ng.ProjectId == projectId).Select(ng => ng).ToList();
                foreach (var data in dataCollection)
                {
                    nodeGroups.Add(NodeGroupViewModel.NewInstance(data));
                }
            }

            return(nodeGroups);
        }