Example #1
0
        public static void Main1(string[] agru)
        {
            List <Contact> contacts = Contact.SampleData();
            List <CallLog> callLogs = CallLog.SampleData();

            "################ Selecting Using Constructor ################".Output();
            var q = from cont in contacts
                    select new ContactName(cont.FirstName + ", " + cont.LastName, (DateTime.Now - cont.DateOfBirth).Days / 365);

            q.PrintValuesInColumn();
            "".Output();

            "################ Selecting Using Type Initializer syntax ################".Output();
            var q1 = from cont in contacts
                     select new ContactName
            {
                FullName   = cont.FirstName + ", " + cont.LastName,
                YearsOfAge = (DateTime.Now - cont.DateOfBirth).Days / 365
            };

            q1.PrintValuesInColumn();
            "".Output();

            "################ Selecting Using Type Anonymous syntax ################".Output();
            var q2 = from cont in contacts
                     select new
            {
                FullName   = cont.FirstName + ", " + cont.LastName,
                YearsOfAge = (DateTime.Now - cont.DateOfBirth).Days / 365
            };

            q2.PrintValuesInColumn();

            Console.ReadLine();
        }
Example #2
0
        private void LINQ2D_Load(object sender, EventArgs e)
        {
            List <Contact> contacts = Contact.SampleData();
            List <CallLog> callLog  = CallLog.SampleData();

            var q = from call in callLog
                    where call.Incoming == true
                    group call by call.Number into g
                    join contact in contacts on
                    g.Key equals contact.Phone
                    orderby contact.FirstName, contact.LastName
                select new
            {
                contact.FirstName,
                contact.LastName,
                Count = g.Count(),
                Avg   = g.Average(c => c.Duration),
                Total = g.Sum(c => c.Duration)
            };

            foreach (var call in q)
            {
                Console.WriteLine(
                    "{0} {1} - Calls:{2}, Time:{3}mins, Avg:{4}mins",
                    call.FirstName, call.LastName,
                    call.Count, call.Total, Math.Round(call.Avg, 2));
            }
        }
        public static void Main1(string[] agru)
        {
            List <Contact> contacts = Contact.SampleData();
            List <CallLog> callLogs = CallLog.SampleData();

            callLogs.PrintValuesInColumn();

            "".Output();
            ("Average : " + callLogs.Average(call => call.Duration).ToString()).Output();

            Console.ReadLine();
        }
Example #4
0
        public static void Main1(string[] agru)
        {
            List <Contact> contacts = Contact.SampleData();
            List <CallLog> callLogs = CallLog.SampleData();

            IEnumerable <Contact> q = from cont in contacts
                                      orderby cont.State, cont.FirstName descending
            select cont;

            q.PrintValuesInColumn();
            q.PrintValuesInRows();

            Console.ReadLine();
        }
Example #5
0
        private void LINQ39_Load(object sender, EventArgs e)
        {
            List <CallLog> callLog = CallLog.SampleData();
            var            q       = callLog.GroupBy(g => g.Number)
                                     .OrderByDescending(g => g.Count())
                                     .Select((g, index) => new {
                number = g.Key,
                rank   = index + 1,
                count  = g.Count()
            });

            foreach (var c in q)
            {
                Console.WriteLine(
                    "rank{0} - {1} , called{2} times.",
                    c.rank, c.number, c.count);
            }
        }
Example #6
0
        public static void Main1(string[] args)
        {
            List <Contact> contacts = Contact.SampleData();
            List <CallLog> callLogs = CallLog.SampleData();

            "************ Output using Extension Method ************".Output();

            var q = contacts.Where(con => con.FirstName.StartsWith("A") && con.FirstName.Length <= 5)
                    .Select(con => new
            {
                con.FirstName,
                con.LastName
            });

            q.PrintValuesInColumn();

            "".Output();
            "************ Output using Query Method ************".Output();

            var q1 = from con in contacts
                     where con.FirstName.StartsWith("A")
                     select new
            {
                con.FirstName,
                con.LastName
            };

            q1.PrintValuesInColumn();

            "".Output();
            "************ Output using Query Method & Using an External Method for Evaluation ************".Output();

            var q2 = from con in contacts
                     where whereCondition(con)
                     select new
            {
                con.FirstName,
                con.LastName
            };

            q2.PrintValuesInColumn();

            Console.ReadLine();
        }
        public static void Main1(string[] args)
        {
            List <Contact> contacts = Contact.SampleData();
            List <CallLog> callLogs = CallLog.SampleData();

            "************ Output using Extension Method ************".Output();

            var q = callLogs.Join(contacts,
                                  call => call.Number,
                                  contact => contact.Phone,
                                  (call, contact) => new
            {
                contact.FirstName,
                contact.LastName,
                call.When,
                call.Duration
            }).OrderBy(call => call.When).Take(5);

            q.PrintValuesInRows();

            "".Output();
            "".Output();
            "************ Output using Query Method ************".Output();

            var q1 = (from call in callLogs
                      join contact in contacts
                      on call.Number equals contact.Phone
                      orderby call.When
                      select new
            {
                contact.FirstName,
                contact.LastName,
                call.When,
                call.Duration
            }).Take(5);

            q1.PrintValuesInRows();
            Console.ReadLine();
        }
Example #8
0
        private void LINQ2C_Load(object sender, EventArgs e)
        {
            List <Contact> contacts = Contact.SampleData();
            List <CallLog> callog   = CallLog.SampleData();

            var q = from call in callog
                    join contact in contacts on
                    call.Number equals contact.Phone
                    select new {
                contact.FirstName,
                contact.LastName,
                call.When,
                call.Duration
            };

            foreach (var c in q)
            {
                Console.WriteLine(
                    "{0} – {1} {2} ({3}min)",
                    c.When.ToString("ddMMM HH:m"), c.FirstName,
                    c.LastName, c.Duration);
            }
        }
        //How to Get the Index Position of the Results
        public static void Main1(string[] agru)
        {
            List <CallLog> callLogs = CallLog.SampleData();

            "************ Output using Extension Method ************".Output();
            var q = callLogs.OrderBy(call => call.Number)
                    .Select((call, index) => new
            {
                Number   = call.Number,
                Duration = call.Duration,
                When     = call.When,
                Rank     = index
            });

            q.PrintValuesInColumn();

            "".Output();
            int iind = 0;

            "************ Output using Query Method ************".Output();
            var q1 = from call in callLogs
                     orderby call.Number
                     select new
            {
                Number   = call.Number,
                Duration = call.Duration,
                When     = call.When,
                Index    = callLogs.IndexOf(call),
                Rank     = iind++
            };

            q1.PrintValuesInColumn();

            "".Output();
            callLogs.PrintValuesInColumn();
            Console.ReadLine();
        }
Example #10
0
        private void LINQ33_Load(object sender, EventArgs e)
        {
            List <Contact> contacts = Contact.SampleData();
            List <CallLog> callLog  = CallLog.SampleData();

            var q = callLog.Join(contacts,
                                 call => call.Number,
                                 contact => contact.Phone,
                                 (call, contact) => new
            {
                contact.FirstName,
                contact.LastName,
                call.When,
                call.Duration
            }).Take(5)
                    .OrderByDescending(call => call.When);

            foreach (var call in q)
            {
                Console.WriteLine("{0} - {1} {2} ({3} min)",
                                  call.When.ToString("ddMM hh:m"),
                                  call.FirstName, call.LastName, call.Duration);
            }
        }
Example #11
0
        static void Main(string[] args)
        {
            Console.WriteLine("Sorted list: ".PadRight(60, '-'));
            List <Contact> cts = Contact.SampleData();

            cts.Sort((c1, c2) =>
            {
                if (c1 != null && c2 != null)
                {
                    return(String.Compare(c1.LastName, c2.LastName));
                }
                return(0);
            });

            foreach (var item in cts)
            {
                Console.WriteLine(item.LastName);
            }

            Console.WriteLine();
            Console.WriteLine("Grouped: ".PadRight(60, '-'));

            {
                SortedDictionary <String, List <Contact> > groups = new SortedDictionary <string, List <Contact> >();
                foreach (var item in cts)
                {
                    Console.WriteLine(item.Phone);
                    if (groups.ContainsKey(item.State))
                    {
                        groups[item.State].Add(item);
                    }
                    else
                    {
                        List <Contact> new_contact = new List <Contact>();
                        groups.Add(item.State, new_contact);
                        new_contact.Add(item);
                    }
                }

                foreach (KeyValuePair <string, List <Contact> > item in groups)
                {
                    Console.WriteLine("State: {0}", item.Key);
                    foreach (Contact c in item.Value)
                    {
                        Console.WriteLine("  {0}", c.LastName);
                    }
                }
            }

            {
                Console.WriteLine();
                Console.WriteLine("Linq grouped: ".PadRight(60, '-'));
                var qry =
                    from i in cts
                    orderby i.State, i.LastName
                group i by i.State;

                foreach (var item in qry)
                {
                    Console.WriteLine("State: {0}", item.Key);
                    foreach (Contact c in item)
                    {
                        Console.WriteLine("  {0}", c.LastName);
                    }
                }
            }

            {
                Console.WriteLine();
                Console.WriteLine("XML conversion - regular: ".PadRight(60, '-'));

                List <Contact> contacts = Contact.SampleData();
                List <CallLog> calls    = CallLog.SampleData();

                Dictionary <string, List <CallLog> > callGroups = new Dictionary <string, List <CallLog> >();

                foreach (CallLog call in calls)
                {
                    if (callGroups.ContainsKey(call.Number))
                    {
                        if (call.Incoming == true)
                        {
                            callGroups[call.Number].Add(call);
                        }
                    }
                    else
                    {
                        if (call.Incoming == true)
                        {
                            List <CallLog> list = new List <CallLog>();
                            list.Add(call);
                            callGroups.Add(call.Number, list);
                        }
                    }
                }
                contacts.Sort((c1, c2) =>
                {
                    return(c1.LastName.CompareTo(c2.LastName));
                });

                using (StringWriter s = new StringWriter())
                {
                    using (XmlTextWriter x = new XmlTextWriter(s))
                    {
                        x.Formatting = Formatting.Indented;
                        x.WriteStartDocument();
                        x.WriteComment("Summarized Incoming Call Stats");
                        x.WriteStartElement("contacts");
                        foreach (Contact con in contacts)
                        {
                            if (callGroups.ContainsKey(con.Phone))
                            {
                                List <CallLog> calls_ = callGroups[con.Phone];

                                long sum = 0;
                                foreach (CallLog call in calls_)
                                {
                                    sum += (long)call.Duration;
                                }

                                double avg = (double)sum / (double)calls_.Count();

                                x.WriteStartElement("contact");
                                x.WriteElementString("lastName", con.LastName);
                                x.WriteElementString("count", calls_.Count().ToString());
                                x.WriteElementString("totalDuration", sum.ToString());
                                x.WriteElementString("averageDuration", avg.ToString());
                                x.WriteEndElement();
                            }
                        }
                        x.WriteEndDocument();
                        x.Flush();

                        Console.WriteLine(s.ToString());
                    }
                }
            }


            {
                Console.WriteLine();
                Console.WriteLine("XML conversion - LINQ: ".PadRight(60, '-'));
                List <Contact> contacts = Contact.SampleData();
                List <CallLog> calls    = CallLog.SampleData();

                XDocument doc = new XDocument(
                    new XComment("Summarized Incoming Call Stats"),
                    new XElement("contacts",
                                 from call in calls
                                 where call.Incoming == true
                                 group call by call.Number into g
                                 join contact in contacts on
                                 g.Key equals contact.Phone
                                 orderby contact.LastName
                                 select new XElement("contact",
                                                     new XElement("lastName", contact.LastName),
                                                     new XElement("count", g.Count()),
                                                     new XElement("totalDuration", g.Sum(c => c.Duration)),
                                                     new XElement("averageDuration", g.Average(c => c.Duration))
                                                     )
                                 )
                    );

                Console.WriteLine(doc.ToString());
            }

            {
                var q = from c in Contact.SampleData()
                        where c.DateOfBirth.AddYears(75) > DateTime.Now
                        orderby c.DateOfBirth descending
                        select string.Format("{0} {1} b.{2}",
                                             c.LastName,
                                             c.FirstName,
                                             c.DateOfBirth.ToString("dd-MMM-yyyy"));

                foreach (var item in q)
                {
                    Console.WriteLine(item);
                }
            }

            {
                var q = from c in Contact.SampleData()
                        group c by c.State;

                foreach (var group in q)
                {
                    Console.WriteLine("State: {0}", group.Key);
                    foreach (Contact c in group)
                    {
                        Console.WriteLine("  {0} {1}",
                                          c.FirstName,
                                          c.LastName);
                    }
                }
            }
        }