Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCI 3328 Object Oriented Programming in C# Chapter 8: LINQ and Generic Collections UTPA – Fall 2012 This set of slides is revised from lecture slides.

Similar presentations


Presentation on theme: "CSCI 3328 Object Oriented Programming in C# Chapter 8: LINQ and Generic Collections UTPA – Fall 2012 This set of slides is revised from lecture slides."— Presentation transcript:

1 CSCI 3328 Object Oriented Programming in C# Chapter 8: LINQ and Generic Collections
UTPA – Fall 2012 This set of slides is revised from lecture slides of Prof. John Abraham. -- Xiang Lian

2 Objectives In this chapter, you will:
Become familiar with the basic concept of LINQ Learn how to use LINQ to query an array Learn how to sort an array using LINQ Learn how to manipulate collections (e.g., List) by LINQ

3 LINQ Language Integrated Query (LINQ) Old way:
Structured Query Language (SQL) Queries are written in string and passed to database which interprets the string, processes the request, and returns the results LINQ allows a programming language to submit queries directly to a wide range of data sources (not just databases!)

4 LINQ (cont'd) LINQ is a logical extension of querying and manipulating data in databases In C#, you must include namespace System.Linq using System.Linq Data sources Arrays Collections Files Query expression is similar to SQL

5 Writing an LINQ Query A LINQ query begins with a from clause
After from clause, specify a range variable and the data source to query The range variable represents each item in the data source (much like foreach) E.g., passed = from score in scores The where clause gives a condition for the search and evaluates to true or false If true, the value is selected The select clause determines what value appears in the results Do not forget semicolon (;) at the end

6 Querying an Array Using LINQ
var filtered = from value in values where value > 4 select value; var sorted = from value in filtered orderby value default: ascending

7 Querying an Array Using LINQ (cont'd)
var sorted = from value in filtered orderby value descending select value; var sorted = from value in values where (value > 4)

8 Display the Results Method call Method declaration
Display (sorted, "values greater than 4, descending:"); Method declaration public static void Display(IEnumerable <int> results, string header) { Console.Write("{0}", header); foreach (var element in results) Console.Write(" {0}", element); }

9 Another Example: Querying an Array Using LINQ
To search for scores >=60 var passed = from score in scores where score >= 60 select score; foreach (var score in passed) { ListLINQresult.Items.Add(score); }

10 Compare Arrays with Collections
You must specify an arrays size You can resize it in some languages at runtime .Net framework generic collections gives greater flexibility Reusable Reliable Powerful Efficient We are going to use the List class from this collection

11 Lists Dynamic resizing
LINQ can be used with different types of data sources, including lists and arrays SQL is only used with databases Lists are similar to arrays but provide additional functionality: Provides many built-in methods Can use LINQ queries

12 Collections Collections do not have a fixed size
Size of a collection is increased automatically when elements are added to it Collections: lists, sorted lists, queues, stacks and array lists UnTyped and typed collections Using System.Collections ArrayList numbers = new ArrayList(); numbers.Add(3); Using System.Colelctions.Generic List<int> numbers = new List<int>(); numbrs.Add(3);

13 Example of List Coding string[] grades = txtEnterGrade.Text.Split(' '); List<int> scores = new List<int>(); int numScores = grades.Length; foreach (string grade in grades) { scores.Add(Convert.ToInt32(grade)); ListBoxGrades.Items.Add(grade); }

14 Example of List Coding (cont'd)
public double standardDeviation(List<int> scores, int numScores) //declaration { int sum=0; foreach (int score in scores) sum = sum + score; }

15 Stack Operation (built-in)
Stack<string> students = new Stack<string>(); students.Push("Abbit"); students.Push("Aguero"); students.Push("Castro"); students.Push("Chen"); students.Push("Cruz"); while (students.Count > 0) MessageBox.Show("Popped: " + students.Pop());

16 Some Methods/Properties of List
.Add Adds to the end of the list .Insert Inserts an element at the specified index .Clear Removes all elements from the list .Remove Removes the first occurrence of the specified value .Contains Returns true if the List contains value .Sort

17 Struct – Example public struct Info { public string fName;
public string lName; public string Address1; public string Address2; public int zip; public string Tele; }

18 List of Struct public List <Info> friendsList = new List<Info>(); Info onePerson; onePerson.fName=txt_fName.Text; onePerson.lName=txt_lName.Text; onePerson.Address1=txtAddr1.Text; onePerson.Address2=txtAddr2.Text; onePerson.zip=Convert.ToInt32 (txtZip.Text); onePerson.Tele=txtTele.Text; friendsList.Add(onePerson);

19 LINQ Search for a Last Name in a List
//will select every person with that last name var foundTele = from person in friendsList where person.lName==txtSearchName.Text select person;

20 Display the Selected Names and Telephone Numbers
foreach (var person in foundTele) { display +=person.fName+" "+person.lName+"\t"; display += person.Tele + "\n"; } MessageBox.Show(display, "Names and Telephone Nos. Persons searched:");

21 Select Those with GPA >+
var foundGPA = from person in friendsList where person.GPA>=Convert.ToSingle(txtSearchGPA.Text) select person;

22 Display foreach (var person in foundGPA) {
display += person.fName + " " + person.lName + "\t"; display += person.Tele + "\t"; display += Convert.ToString(person.GPA)+"\n"; } MessageBox.Show(display, "Names and Telephone Nos. Persons searched:")

23 More About File Input/Output

24 Obtaining File Name From Chooser
OpenFileDialog fDialog = new OpenFileDialog(); if (fDialog.ShowDialog() == DialogResult.OK) { fileName = (fDialog.FileName.ToString()); MessageBox.Show(fileName); }

25 Reading From a File TextReader ofile = new StreamReader(fileName);
while (ofile.Peek()!=-1) { string oneline = ofile.ReadLine(); MessageBox.Show(oneline,"Reading From File.."); string[] items = oneline.Split(','); onePerson.fName = items[0]; onePerson.lName = items[1]; onePerson.GPA = Convert.ToSingle(items[3]); onePerson.Tele = items[2]; friendsList.Add(onePerson); } ofile.Close();

26 Writing to the File StreamWriter outfile = new StreamWriter(fileName);
foreach (Info person in friendsList) outfile.WriteLine(person.fName+","+person.lName+","+person.Tele+","+Convert.ToString(person.GPA)); outfile.Close();

27 Example of Employees public class Employee { public string FirstName; public string LastName; public decimal monthlySalaryValue; }

28 Example of Employees (cont'd)
public class LINQwithArray { Employee [] employee_array; LINQwithArray() // … initializing arrays } public void LINQ_query() var nameSorted = (from e in employee_array where e.MonthlySalary >= 4000 orderby e.LastName, e.FirstName select e).Distinct(); if (!nameSorted.Any()) Console.WriteLine("not found\n");


Download ppt "CSCI 3328 Object Oriented Programming in C# Chapter 8: LINQ and Generic Collections UTPA – Fall 2012 This set of slides is revised from lecture slides."

Similar presentations


Ads by Google