public IEnumerable <CollectionSite> List()
        {
            List <CollectionSite> collectionSites = new List <CollectionSite>();

            try
            {
                var results = _dataContext.usp_GetCropsBySite().ToList();

                var resultsGrouped = from result in results
                                     group result by new { result.site_id, result.site_long_name } into siteGroup
                select siteGroup;

                foreach (var resultGroup in resultsGrouped)
                {
                    CollectionSite collectionSite = new CollectionSite();
                    collectionSite.CollectionSiteID   = resultGroup.Key.site_id.GetValueOrDefault();
                    collectionSite.CollectionSiteName = resultGroup.Key.site_long_name;

                    var subResultSiteCrops = from subResultSiteCrop in results
                                             where subResultSiteCrop.site_id == collectionSite.CollectionSiteID
                                             select subResultSiteCrop;

                    foreach (var subResult in subResultSiteCrops)
                    {
                        CollectionCrop collectionCrop = new CollectionCrop();
                        collectionCrop.CropDescriptorID = subResult.crop_id;
                        collectionCrop.CropDescriptor   = subResult.name;
                        collectionSite.CollectionSiteCrops.Add(collectionCrop);

                        //collectionSite.CollectionSiteCrops.Add(new CollectionCrop()
                        //{
                        //    CropDescriptorID = subResult.CropDescriptorID,
                        //    CropDescriptor = subResult.CropDescriptor
                        //});
                    }

                    collectionSites.Add(collectionSite);
                }

                //collectionSites = from result in results
                //             group result by new { result.site_id, result.site_long_name } into siteGroup
                //             select new CollectionSite()
                //             {
                //                CollectionSiteID = siteGroup.Key.site_id.GetValueOrDefault(),
                //                CollectionSiteName = siteGroup.Key.site_long_name
                //             };

                //foreach (CollectionSite collectionSite in collectionSites)
                //{
                //    var subResultSiteCrops = from subResultSiteCrop in results
                //    where subResultSiteCrop.site_id == collectionSite.CollectionSiteID
                //    select new CollectionCrop()
                //    {
                //        CropDescriptorID = subResultSiteCrop.crop_id,
                //        CropDescriptor = subResultSiteCrop.name
                //    };

                //    foreach (var subResult in subResultSiteCrops)
                //    {
                //        CollectionCrop collectionCrop = new CollectionCrop();
                //        collectionCrop.CropDescriptorID = subResult.CropDescriptorID;
                //        collectionCrop.CropDescriptor = subResult.CropDescriptor;
                //        collectionSite.CollectionSiteCrops.Add(collectionCrop);

                //        //collectionSite.CollectionSiteCrops.Add(new CollectionCrop()
                //        //{
                //        //    CropDescriptorID = subResult.CropDescriptorID,
                //        //    CropDescriptor = subResult.CropDescriptor
                //        //});
                //    }



                //    //    string siteGroupId = siteGroup..Key.ToString();
                //    //    CollectionSite collectionSite = new CollectionSite { CollectionSiteName = siteGroupId };

                //    //    var resultsByState = results.Where(x => x.site_id.ToString() == siteGroupId);
                //    //    foreach (var resultBySite in resultsByState)
                //    //    {
                //    //        CollectionCrop collectionCrop = new CollectionCrop();
                //    //        collectionCrop.StateName = resultBySite.STATE;
                //    //        collectionCrop.CityName = resultBySite.city;
                //    //        collectionCrop.SiteName = resultBySite.site_long_name;
                //    //        collectionCrop.CropDescriptorID = resultBySite.crop_id;
                //    //        collectionCrop.CropDescriptor = resultBySite.name;
                //    //        collectionSite.CollectionSiteCrops.Add(collectionCrop);
                //    //    }
                //    //    collectionStates.Add(collectionSite);
                //}
            }
            catch (Exception ex)
            {
            }

            return(collectionSites);
        }
 public CollectionSiteViewModel(CollectionSite collectionSite = null)
 {
     CollectionSite = collectionSite ?? new CollectionSite();
 }