public FileContentResult Reflection(string model)
        {
            List <WidgetBeta>  listBetas  = null;
            List <WidgetGamma> listGammas = null;
            List <WidgetPrime> listPrimes = null;

            WidgetPrime singleSource = null;
            WidgetBeta  singleTarget = null;

            listBetas  = PopulateBeta();
            listGammas = PopulateGamma();

            listPrimes = PopulatePrime();// new List<WidgetPrime>();

            for (int i = 0; i < listPrimes.Count; i++)
            {
                singleSource = listPrimes[i];
                singleTarget = new WidgetBeta();

                singleTarget = (WidgetBeta)TransferValues(singleSource, singleTarget);

                listBetas.Add(singleTarget);
            }


            CsvExport <WidgetBeta> csv = new CsvExport <WidgetBeta>(listBetas);

            return(File(new System.Text.UTF8Encoding().GetBytes(csv.Export()), "text/csv", "test.csv"));

            // return RedirectToAction("Reflection");
        }
        public List <WidgetBeta> PopulateBeta()
        {
            List <WidgetBeta> widgets    = new List <WidgetBeta>();
            WidgetBeta        thisWidget = null;

            int iLoop = 5;

            Random rand = new Random();

            for (int i = 0; i < iLoop; i++)
            {
                thisWidget             = new WidgetBeta();
                thisWidget.id          = i + 2;
                thisWidget.RandomInt   = rand.Next(10);
                thisWidget.Description = String.Format("Description{0}", i + 2);

                widgets.Add(thisWidget);
            }

            return(widgets);
        }
        public ActionResult Index(string model)
        {
            IEnumerable <WidgetBeta> genericList = null;

            List <WidgetBeta>  listBetas  = null;
            List <WidgetGamma> listGammas = null;
            List <WidgetPrime> listPrimes = null;

            List <WidgetBeta>  filteredBetas   = null;
            List <WidgetGamma> filteredGammas  = null;
            List <WidgetPrime> filteredPrimes  = null;
            List <WidgetPrime> filteredPrimes2 = null;

            WidgetBeta filteredBeta = null;

            listBetas  = PopulateBeta();
            listGammas = PopulateGamma();
            listPrimes = PopulatePrime();

            //base class -- not really usable
            genericList = listBetas.Where(d => d.Description == "Description1");

            //won't compile
            //filteredBetas = listBetas.Where(d => d.Description == "Description1");

            //Basic compile -- either a list or single
            filteredBetas = listBetas.Where(d => d.Description == "Description1").ToList();

            filteredBeta = listBetas.Where(d => d.Description == "Description1").FirstOrDefault();

            //filter a list that meet a calculated condition
            filteredGammas = listGammas.Where(r => (r.id % 2) == 1).ToList();


            //create anything
            var loosyGoosy = (from g in listGammas
                              select new
            {
                id = g.id
                ,
                different = g.RandomString
            }).ToList();


            //filter into a strongly typed list
            filteredPrimes = (from g in listGammas
                              select new WidgetPrime
            {
                id = g.id
                ,
                RandomString = g.RandomString
            }).ToList <WidgetPrime>();

            //filter into another list, with conditions
            filteredPrimes2 = (from g in listGammas
                               select new WidgetPrime
            {
                id = g.id
                ,
                RandomString = g.RandomString
            }).Where(r => (r.id % 2) == 0).ToList <WidgetPrime>();


            string holdingComment = "I don'\t actually do anything.";

            holdingComment += " prevent green underlines ";

            return(RedirectToAction("Index"));
        }