background preloader

LINQ

Facebook Twitter

LINQ. Language INtegrated Query (LINQ) – część technologii Microsoft .NET, która została opracowana przez Andersa Hejlsberga – znanego z zaprojektowania języka Delphi i języka C#. Technologia LINQ umożliwia zadawanie pytań na obiektach. Składnia języka LINQ jest prosta i przypomina SQL. Jak działa LINQ? [edytuj | edytuj kod] LINQ stanowi warstwę abstrakcji nad różnymi źródłami danych. Obiekty implementujące interfejs IEnumerable<T>bazy danychjęzyk XML LINQ posiada pełne wsparcie dla transakcji, widoków oraz procedur przechowanych. Standardowe operatory zapytań LINQ[edytuj | edytuj kod] Select – operator ten jest używany, by wybrać z kolekcji odpowiedniego rodzaju dane (zbiory/podzbiory danego obiektu)SelectMany – jest używany, by dokonać wyświetlenia w przypadku relacji jeden-do-wielu, czyli jeśli obiekt w kolekcji zawiera inną kolekcję jako część danych, SelectMany będzie użyte do wybrania całej pod-kolekcji.Where – operator Where pozwala zdefiniować zbiór zasad dla każdego obiektu w kolekcji.

Default. LINQ to dostępna od .NET Framework 3.5 metoda dostępu do danych. LINQ to nie tylko składnia umożliwiająca tworzenie zapytań na wzór tych z SQL, ale też sposób na dostęp do wszelkich list danych, obiektów, plików xml - inaczej mówiąc, linq umożliwia skorzystanie z dowolnego źródła danych i wykonanie na nich podstawowych operacji takich jak: select, insert, update, delete oraz oczywiście wiele innych bardziej zaawansowanych. Linq umożliwia także formatowanie otrzymanych wyników w dowolną formę oraz bardzo proste manipulowanie wynikami zapytań. Linq jest wspierane w pełni przez edytor Visual Studio, wraz z intellisense czy debuggerem, co znacznie poprawia wydajność pracy. Jednak typowym zastosowaniem linq jest jego użycie w modelu LINQ TO SQL. Linq to Sql jest narzędziem typu O/RM, które umożliwia wymodelowanie relacyjnej bazy danych używając do tego klas platformy .NET.

Następnie takiego modelu można użyć do pobierania/aktualizowania/wstawiania/usuwania danych z bazy. 1. 2. Select p; 3. 4. Code review: Pułapka z LINQ. Rozważmy następujący kod: IEnumerable<Employee> employees=GetAllEmployees(); if (employees.Count() > 0) { // jakis kod} Załóżmy, że chcemy wykonać jakiś kod jeśli istnieją w bazie pracownicy. Ponadto nie mamy pojęcia co dokładnie zwraca GetAllEmployees – wiemy, że jest to IEnumerable<Employee>. Jeśli jest to np. LINQ – SQL, rozwiązanie jest bardzo niewydajne. Lepiej zastąpić to metodą Any(): IEnumerable<Employee> employees=GetAllEmployees(); if (employees.Any()) { // jakis kod} Count musi pobrać liczbę wszystkich wierszy w bazie lub wykonać foreach po każdym obiekcie. Explore posts in the same categories:C#, Patterns & Practices. Dobre i złe praktyki w C# – część V (LINQ)

Introduction to LINQ. Language-Integrated Query (LINQ) is an innovation introduced in Visual Studio 2008 and .NET Framework version 3.5 that bridges the gap between the world of objects and the world of data. Traditionally, queries against data are expressed as simple strings without type checking at compile time or IntelliSense support. Furthermore, you have to learn a different query language for each type of data source: SQL databases, XML documents, various Web services, and so on. LINQ makes a query a first-class language construct in C# and Visual Basic. You write queries against strongly typed collections of objects by using language keywords and familiar operators.

The following illustration shows a partially-completed LINQ query against a SQL Server database in C# with full type checking and IntelliSense support. You can use LINQ queries in new projects, or alongside non-LINQ queries in existing projects. Basic LINQ Query Operations (C#) In a LINQ query, the first step is to specify the data source. In C# as in most programming languages a variable must be declared before it can be used. In a LINQ query, the from clause comes first in order to introduce the data source (customers) and the range variable (cust). //queryAllCustomers is an IEnumerable<Customer> var queryAllCustomers = from cust in customers select cust; The range variable is like the iteration variable in a foreach loop except that no actual iteration occurs in a query expression.

When the query is executed, the range variable will serve as a reference to each successive element in customers. Because the compiler can infer the type of cust, you do not have to specify it explicitly. Probably the most common query operation is to apply a filter in the form of a Boolean expression. Var queryLondonCustomers = from cust in customers where cust.City == "London" select cust; where cust.City=="London" && cust.Name == "Devon" from order in Customer.Orders... Tasks. Introduction to linq. LingQ. LINQ Introduction Part 1 Of 3. Download demo project (includes source code) - 394.3 KB Contents Introduction .NET 3.0 has now been released, so we should all know it by now shouldn't we?

Jeez, it doesn't seem like that long ago that .NET 2.0 came along. Well for those that don't realize .NET 3.0 actually contains quite a lot of new stuff, such as: Windows Workflow Foundation (WWF): Managing object lifecycles / persistent object storage Windows Communication Foundation (WCF): The new communication layer Windows Presentation Foundation (WPF): The new presentation layer (XAML) Windows Cardspace: Which provides a standards-based solution for working with and managing diverse digital identities So as you can see there is a lot to be learned right there.

LINQ: Language Integrated Query for in memory objects (LINQ to Objects) DINQ: Language Integrated Query for databases (LINQ to ADO NET) XLINQ: Language Integrated Query for XML (LINQ to XML) The proposed article series content will be as follows: But What Is LINQ Anyway?