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(); }
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(); }
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(); }
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); } }
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(); }
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(); }
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); } }
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); } } } }