public ContactInfo GetContactInfo(SelectSample2 app, int id) { ContactInfo cInfo = (from ci in app.contactList where ci.ID == id select ci) .FirstOrDefault(); return(cInfo); }
static void Main(string[] args) { SelectSample2 app = new SelectSample2(); // Produce a filtered sequence of unmodified Students. IEnumerable <Student> studentQuery1 = from student in app.students where student.ID > 111 select student; Console.WriteLine("Query1: select range_variable"); foreach (Student s in studentQuery1) { Console.WriteLine(s.ToString()); } // Produce a filtered sequence of elements that contain // only one property of each Student. IEnumerable <String> studentQuery2 = from student in app.students where student.ID > 111 select student.Last; Console.WriteLine("\r\n studentQuery2: select range_variable.Property"); foreach (string s in studentQuery2) { Console.WriteLine(s); } // Produce a filtered sequence of objects created by // a method call on each Student. IEnumerable <ContactInfo> studentQuery3 = from student in app.students where student.ID > 111 select student.GetContactInfo(app, student.ID); Console.WriteLine("\r\n studentQuery3: select range_variable.Method"); foreach (ContactInfo ci in studentQuery3) { Console.WriteLine(ci.ToString()); } // Produce a filtered sequence of ints from // the internal array inside each Student. IEnumerable <int> studentQuery4 = from student in app.students where student.ID > 111 select student.Scores[0]; Console.WriteLine("\r\n studentQuery4: select range_variable[index]"); foreach (int i in studentQuery4) { Console.WriteLine("First score = {0}", i); } // Produce a filtered sequence of doubles // that are the result of an expression. IEnumerable <double> studentQuery5 = from student in app.students where student.ID > 111 select student.Scores[0] * 1.1; Console.WriteLine("\r\n studentQuery5: select expression"); foreach (double d in studentQuery5) { Console.WriteLine("Adjusted first score = {0}", d); } // Produce a filtered sequence of doubles that are // the result of a method call. IEnumerable <double> studentQuery6 = from student in app.students where student.ID > 111 select student.Scores.Average(); Console.WriteLine("\r\n studentQuery6: select expression2"); foreach (double d in studentQuery6) { Console.WriteLine("Average = {0}", d); } // Produce a filtered sequence of anonymous types // that contain only two properties from each Student. var studentQuery7 = from student in app.students where student.ID > 111 select new { student.First, student.Last }; Console.WriteLine("\r\n studentQuery7: select new anonymous type"); foreach (var item in studentQuery7) { Console.WriteLine("{0}, {1}", item.Last, item.First); } // Produce a filtered sequence of named objects that contain // a method return value and a property from each Student. // Use named types if you need to pass the query variable // across a method boundary. IEnumerable <ScoreInfo> studentQuery8 = from student in app.students where student.ID > 111 select new ScoreInfo { Average = student.Scores.Average(), ID = student.ID }; Console.WriteLine("\r\n studentQuery8: select new named type"); foreach (ScoreInfo si in studentQuery8) { Console.WriteLine("ID = {0}, Average = {1}", si.ID, si.Average); } // Produce a filtered sequence of students who appear on a contact list // and whose average is greater than 85. IEnumerable <ContactInfo> studentQuery9 = from student in app.students where student.Scores.Average() > 85 join ci in app.contactList on student.ID equals ci.ID select ci; Console.WriteLine("\r\n studentQuery9: select result of join clause"); foreach (ContactInfo ci in studentQuery9) { Console.WriteLine("ID = {0}, Email = {1}", ci.ID, ci.Email); } // Keep the console window open in debug mode Console.WriteLine("Press any key to exit."); Console.ReadKey(); }