110 likes | 287 Views
LINQ ( Language-INtegrated Query ). Marcin Bohdziewicz s4070. Architektura LINQ. Zalety. Uniwersalność Rozszerzalność Poprawność kodu Podniesienie poziomu abstrakcji. Uniwersalność. LINQ to Objects LINQ to SQL LINQ to XML LINQ to DataSets LINQ to Entities. Rozszerzalność.
E N D
LINQ (Language-INtegratedQuery) Marcin Bohdziewicz s4070
Zalety • Uniwersalność • Rozszerzalność • Poprawność kodu • Podniesienie poziomu abstrakcji
Uniwersalność • LINQ to Objects • LINQ to SQL • LINQ to XML • LINQ to DataSets • LINQ to Entities
Rozszerzalność • LINQ to Amazon • LINQ to Flickr • DbLinq: LINQ to MySQL, PostgreSQL, Oracle, Ingres, SQLite • LINQ to Google • LINQ to System Search • Etc.
Poprawność kodu • SqlCommandcommand = new SqlCommand("SELEECT * FROM [dbo].[Tabela]”);
Podniesienie poziomu abstrakcji • Różni dostawcy – różna składnia SqlConnectionsqlConnection =newSqlConnection(); MySqlConnectionmySqlConnection =newMySqlConnection(); SqlCommandsqlCommand = new SqlCommand("SELECT TOP 10 * FROM [dbo].[Tabela]"); MySqlCommandmySqlCommand = new MySqlCommand("SELECT * FROM TabelaLIMIT 10");
Nowości w .NET 3.5 • Metody rozszerzające • Wyrażenia Lambda • Typy anonimowe
Operatory • Select • Where • Sum • Join • Take • GroupBy • OrderBy • Etc.
Zapytania i metody varresults = from w inwords wherew.Contains(„z”) select w; varresults = words.Where( w => w.Contains(„z”) ).Select( w => w );
Porównanie: List<EmployeeDetails> employees=db.GetEmployees(); List<EmployeeDetails> matches = newList<EmployeeDetails> (); Foreach (EmployeeDetailsemployeeinemployees){ if( employee.LastName.StartsWith(„D”)){ matches.Add(employee); } } matches= fromemployeeinemployees whereemployee.LastNAme.StartsWith(„D”) selectemployee;