1293:
2530:
75:
2540:
2550:
32:
1100:
choose so, the LINQ Providers analyze the expression trees contained in a query in order to generate essential pieces needed for the execution of a query. This can be SQL fragments or any other completely different representation of code as further manipulatable data. LINQ comes with LINQ Providers for in-memory object collections,
776:: Anonymous types allow classes that contain only data-member declarations to be inferred by the compiler. This is useful for the Select and Join operators, whose result types may differ from the types of the original objects. The compiler uses type inference to determine the fields contained in the classes and generates
442:
A generalized Sum / Min / Max. This operator takes a function that specifies how two values are combined to form an intermediate or the final result. Optionally, a starting value can be supplied, enabling the result type of the aggregation to be arbitrary. Furthermore, a finalization function, taking
431:
These operators optionally take a function that retrieves a certain numeric value from each element in the collection and uses it to find the sum, minimum, maximum or average values of all the elements in the collection, respectively. Overloaded versions take no function and act as if the identity is
417:
For a user-provided mapping from collection elements to collections, semantically two steps are performed. First, every element is mapped to its corresponding collection. Second, the result of the first step is flattened by one level. Select and Where are both implementable in terms of SelectMany, as
1099:
The expression trees are at the core of the LINQ extensibility mechanism, by which LINQ can be adapted for many data sources. The expression trees are handed over to LINQ Providers, which are data source-specific implementations that adapt the LINQ queries to be used with the data source. If they
1083:
The C#3.0 specification defines a Query
Expression Pattern along with translation rules from a LINQ expression to an expression in a subset of C# 3.0 without LINQ expressions. The translation thus defined is actually un-typed, which, in addition to lambda expressions being interpretable as either
588:
The Any operator checks, if there are any elements in the collection matching the predicate. It does not select the element, but returns true if at least one element is matched. An invocation of any without a predicate returns true if the collection non-empty. The All operator returns true if all
562:
These operators take a predicate. The First operator returns the first element for which the predicate yields true, or, if nothing matches, throws an exception. The FirstOrDefault operator is like the First operator except that it returns the default value for the element type (usually a null
458:
on two collections, based on matching keys for objects in each collection. It takes two functions as delegates, one for each collection, that it executes on each object in the collection to extract the key from the object. It also takes another delegate in which the user specifies which data
1167:
to one another. For this reason, LINQ to SQL also defines a mapping framework. The mapping is done by defining classes that correspond to the tables in the database, and containing all or a subset of the columns in the table as data members. The correspondence, along with other
1431:
First available in 2004 as a compiler preview, Cω's features were subsequently used by
Microsoft in the creation of the LINQ features released in 2007 in .NET version 3.5 The concurrency constructs have also been released in a slightly modified form as a library, named
404:
The Where operator allows the definition of a set of predicate rules that are evaluated for each object in the collection, while objects that do not match the rule are filtered away. The predicate is supplied to the operator as a delegate. This implements the
1125:
collections to be queried locally. Current implementation of LINQ to
Objects perform interface implementation checks to allow for fast membership tests, counts, and indexed lookup operations when they are supported by the runtime type of the IEnumerable.
1278:
databases, in order to support any generic database, LINQ also includes the LINQ to DataSets. It uses ADO.NET to handle the communication with the database. Once the data is in ADO.NET Datasets, LINQ to DataSets execute queries against these datasets.
359:
In what follows, the descriptions of the operators are based on the application of working with collections. Many of the operators take other functions as arguments. These functions may be supplied in the form of a named method or anonymous function.
1261:
and retrieves the result set from the database server. Since the processing happens at the database server, local methods, which are not defined as a part of the lambda expressions representing the predicates, cannot be used. However, it can use the
792:: Lambda expressions allow predicates and other projection functions to be written inline with a concise syntax, and support full lexical closure. They are captured into parameters as delegates or expression trees depending on the Query Provider.
563:
reference) in case nothing matches the predicate. The last operator retrieves the last element to match the predicate, or throws an exception in case nothing matches. The LastOrDefault returns the default element value if nothing matches.
1909:
When calling a query multiple times with Entity
Framework the recommended approach is to use compiled LINQ queries. Compiling a query results in a performance hit the first time you use the query but subsequent calls execute much
1116:
The LINQ to
Objects provider is used for in-memory collections, using the local query execution engine of LINQ. The code generated by this provider refers to the implementation of the standard query operators as defined on the
575:
The SingleOrDefault operator takes a predicate and return the element that matches the predicate. If more than one element matches the predicate, an exception is thrown. If no element matches the predicate, a default value is
469:
The Take operator selects the first n objects from a collection, while the TakeWhile operator, which takes a predicate, selects those objects that match the predicate (stopping at the first object that doesn't match
1369:
extension method defined by the
ParallelEnumerable class in the System.Linq namespace of the .NET framework. The PLINQ engine can execute parts of a query concurrently on multiple threads, providing faster results.
1486:), although none are strictly equivalent to LINQ in the .NET inspired languages C#, F# and VB.NET (where it is a part of the language, not an external library, and where it often addresses a wider range of needs).
1154:
databases. Since SQL Server data may reside on a remote server, and because SQL Server has its own query engine, LINQ to SQL does not use the query engine of LINQ. Instead, it converts a LINQ query to a
1234:
includes a mapping designer that can be used to create the mapping between the data schemas in the object as well as the relational domain. It can automatically create the corresponding classes from a
418:
long as singleton and empty collections are available. The translation rules mentioned above still make it mandatory for a LINQ provider to provide the other two operators. This implements the
319:, and third-party data sources. Other uses, which utilize query expressions as a general framework for readably composing arbitrary computations, include the construction of event handlers or
498:
The OrderBy operator is used to specify the primary sort ordering of the elements in a collection according to some key. The default ordering is in ascending order, to reverse the order, the
936:
all are inferred by the compiler in accordance to the signatures of the methods eventually used. The basis for choosing the methods is formed by the query expression-free translation result
476:
The Skip and SkipWhile operators are complements of Take and TakeWhile - they skip the first n objects from a collection, or those objects that match a predicate (for the case of SkipWhile).
532:
The
Distinct operator removes duplicate instances of an object from a collection. An overload of the operator takes an equality comparer object which defines the criteria for distinctness.
751:
Query syntax: A language is free to choose a query syntax that it will recognize natively. These language keywords must be translated by the compiler to appropriate LINQ method calls.
2059:
463:. Like the Select operator, the results of a join are instantiations of a different class, with all the data members of both the types of the source objects, or a subset of them.
1084:
delegates or expression trees, allows for a great degree of flexibility for libraries wishing to expose parts of their interface as LINQ expression clauses. For example,
569:
The Single operator takes a predicate and returns the element that matches the predicate. An exception is thrown, if none or more than one element match the predicate.
754:
Implicitly typed variables: This enhancement allows variables to be declared without specifying their types. The languages C# 3.0 and
Oxygene declare them with the
1893:
1424:. Many of these ideas were inherited from an earlier incubation project within the WebData XML team called X# and Xen. Cω also includes new constructs to support
601:
The Count operator counts the number of elements in the given collection. An overload taking a predicate, counts the number of elements matching the predicate.
1138:
objects, which are then queried against using the local execution engine that is provided as a part of the implementation of the standard query operator.
92:
550:
operation on two sequences, respectively. Each has an overload which takes an equality comparer object which defines the criteria for element equality.
2586:
2091:
1567:
2282:
2694:
2659:
2116:
506:
specifies subsequent ordering of the elements. The function to extract the key value from the object is specified by the user as a delegate.
1501:
42:
222:
139:
2454:
1626:
111:
1993:
384:
on the collection to select interesting aspects of the elements. The user supplies an arbitrary function, in the form of a named or
158:
2314:
1766:
786:: Object initializers allow an object to be created and initialized in a single scope, as required for Select and Join operators.
118:
2064:
2472:
2339:
2294:
770:, which allows the results of the queries to be specified and defined without declaring the type of the intermediate variables.
2011:
2543:
2143:
1879:
While it is true that LINQ is powerful and very efficient, large sets of data can still cause unexpected performance problems
1544:
1439:
740:
736:
728:
406:
320:
258:
237:
233:
96:
125:
2579:
2267:
459:
elements, from the two matched elements, should be used to create the resultant object. The GroupJoin operator performs a
296:
1238:, as well as allow manual editing to create a different view by using only a subset of the tables or columns in a table.
706:. In both cases, only the subset of elements successfully cast to the target type are included. No exceptions are thrown.
2674:
2614:
2084:
444:
419:
2027:
1816:
2345:
2333:
1897:
1867:
1642:
1433:
1257:
interface, so that the expression tree is created, which the LINQ to SQL provider handles. It converts the query into
393:
107:
2054:
2684:
334:), along with translation rules used by the compiler to translate query syntax expressions into expressions using
85:
2777:
2629:
2619:
1495:
1417:
1164:
543:
1588:
1230:
and the two data members correspond to two columns. The classes must be defined before LINQ to SQL can be used.
648:
from the collection, indexed by the key K. A user supplied projection function extracts a key from each element.
641:
from the collection, indexed by the key K. A user supplied projection function extracts a key from each element.
2787:
2782:
2669:
2649:
2572:
2277:
1988:. Manning. pp. 56-57 (as reported in the Google Books search link - the book does not have page numbers).
1327:
features and syntax. Naive LINQ implementation patterns can lead to a catastrophic degradation of performance.
308:
605:
The standard query operator API also specifies certain operators that convert a collection into another type:
556:
The
SequenceEqual operator determines whether all elements in two collections are equal and in the same order.
2624:
2462:
2199:
2188:
2111:
2077:
547:
1266:
on the server. Any changes to the result set are tracked and can be submitted back to the database server.
2634:
2434:
2429:
2393:
2150:
1425:
364:
2735:
2719:
2679:
2299:
2180:
1177:
381:
285:
229:
194:
182:
20:
132:
2689:
2250:
2155:
1275:
1147:
1101:
719:
for .NET Framework 3.5, it also defines optional language extensions that make queries a first-class
304:
1924:
2309:
1346:
1160:
1159:
query that is then sent to SQL Server for processing. However, since SQL Server stores the data as
716:
316:
1944:
1842:
2210:
1506:
1443:
1354:
1231:
1151:
789:
783:
720:
539:
385:
339:
289:
189:
1746:
2320:
2235:
1989:
1622:
2553:
2049:
2361:
2223:
1770:
1263:
1169:
1108:
datasets and XML documents. These different providers define the different flavors of LINQ:
518:
The GroupBy operator takes a function that extracts a key value and returns a collection of
335:
2505:
2467:
2165:
2015:
1511:
1421:
1235:
724:
214:
177:
1863:
1796:
1726:
1706:
1686:
1666:
1530:
1306:
Please help update this article to reflect recent events or newly available information.
2595:
2489:
2378:
2138:
1964:
777:
773:
767:
389:
343:
281:
277:
2771:
2533:
2351:
2327:
2304:
2260:
2170:
1398:
763:
489:
2484:
2419:
2245:
2240:
2008:
1479:
1820:
1163:
and LINQ works with data encapsulated in objects, the two representations must be
727:
for writing queries. These language extensions have initially been implemented in
526:
objects can then be used to enumerate all the objects for a particular key value.
443:
the aggregation result to yet another value, can be supplied. This implement the
2479:
2401:
2255:
2194:
1413:
1378:
Many of the concepts that LINQ introduced were originally tested in
Microsoft's
1173:
762:
keyword without type declaration accomplishes the same. Such objects are still
582:
The ElementAt operator retrieves the element at a given index in the collection.
201:
74:
388:, which projects the data members. The function is passed to the operator as a
2370:
1471:
1463:
1428:; these features were largely derived from the earlier Polyphonic C# project.
460:
455:
1304:. The reason given is: The source is old and now performs better than before.
2510:
2383:
2272:
1405:
1245:
that takes a connection string to the server, and can be used to generate a
367:
defined by LINQ is exposed to the user as the Standard Query Operator (SQO)
274:
679:. Throws an exception in any element cannot be cast to the indicated type.
303:
statements, and can be used to conveniently extract and process data from
1383:
796:
For example, in the query to select all the objects in a collection with
595:
The Contains operator checks, if the collection contains a given element.
1965:"Programming in the Age of Concurrency: Concurrent Programming with PFX"
2756:
2644:
2639:
2515:
2440:
2406:
2230:
2218:
1105:
747:
having announced preliminary support. The language extensions include:
744:
323:
2709:
2699:
2160:
1134:
The LINQ to XML provider converts an XML document to a collection of
732:
482:
The OfType operator is used to select the elements of a certain type.
241:
1475:
1249:
where T is the type to which the database table will be mapped. The
1894:"Potential Performance Issues with Compiled LINQ Query Re-Compiles"
766:; for these objects the compiler infers the types of variables via
2714:
2564:
2424:
1483:
1467:
1258:
1797:"LINQ to SQL: .NET Language-Integrated Query for Relational Data"
2654:
2132:
2100:
1459:
1365:
interface can take advantage of the PLINQ engine by calling the
1300:
Parts of this article (those related to Performance) need to be
2568:
2073:
2704:
2609:
1455:
1409:
1286:
1156:
368:
312:
300:
254:
68:
25:
1984:
Eichert, Steve; Wooley, James B.; Marguerie, Fabrice (2008).
338:(called method syntax by Microsoft) with these method names,
1843:"LINQ Performance Test: My First Visual Studio 2008 Project"
2009:
Concepts behind the C# 3.0 language | Articles | TomasP.Net
1323:
Non-professional users may struggle with subtleties in the
1337:
performance compared to ADO.NET depends on the use case.
1146:
The LINQ to SQL provider allows LINQ to be used to query
2069:
1274:
Since the LINQ to SQL provider (above) works only with
1253:
encapsulates the data in the table, and implements the
215:
https://learn.microsoft.com/en-us/dotnet/standard/linq/
49:
2065:
How does it work in C#? - Part 3 (C# LINQ in detail)
609:
AsEnumerable: Statically types the collection as an
2749:
2728:
2602:
2498:
2453:
2392:
2369:
2360:
2209:
2179:
2125:
616:AsQueryable: Statically types the collection as an
295:LINQ extends the language by the addition of query
248:
220:
210:
200:
188:
176:
99:. Unsourced material may be challenged and removed.
1357:execution engine for LINQ queries. It defines the
371:. The query operators supported by the API are:
326:. It also defines a set of method names (called
1925:"Performance comparisons LinQ to SQL, ADO, C#"
1367:AsParallel<T>(this IEnumerable<T>)
2580:
2085:
1747:".NET Language-Integrated Query for XML Data"
1412:documents) accessible with the same ease and
698:by attempting to cast each element from type
559:First / FirstOrDefault / Last / LastOrDefault
8:
1226:This class definition maps to a table named
171:
512:The Reverse operator reverses a collection.
19:"LINQ" redirects here. For other uses, see
2587:
2573:
2565:
2539:
2366:
2092:
2078:
2070:
1345:Version 4 of the .NET framework includes
1176:, are specified using LINQ to SQL-defined
522:objects, for each distinct key value. The
170:
1397:, another research language based on the
715:While LINQ is primarily implemented as a
288:, originally released as a major part of
159:Learn how and when to remove this message
1404:Cω attempts to make datastores (such as
1382:research project, formerly known by the
1791:
1789:
1787:
1612:
1610:
1522:
2283:Extensible Application Markup Language
2055:LINQ to Objects for the .NET developer
1545:"Monadic Parser Combinators using C#3"
538:These operators are used to perform a
1562:
1560:
7:
2549:
1502:Object-relational impedance mismatch
97:adding citations to reliable sources
1142:LINQ to SQL (formerly called DLINQ)
1130:LINQ to XML (formerly called XLINQ)
1096:makes use of the expression trees.
502:operator is to be used. ThenBy and
1241:The mapping is implemented by the
671:by casting each element from type
16:Microsoft .NET Framework component
14:
1864:"Increase LINQ Query Performance"
1361:class. Any implementation of the
690:. Alternately converts a generic
663:. Alternately converts a generic
52:and remove advice or instruction.
2548:
2538:
2529:
2528:
2315:Windows Communication Foundation
1291:
659:by casting each element to type
280:component that adds native data
73:
30:
2340:Windows Presentation Foundation
2295:Managed Extensibility Framework
2050:Official Microsoft LINQ Project
2028:"The Joins Concurrency Library"
682:OfType: converts a non-generic
380:The Select operator performs a
84:needs additional citations for
1923:Kshitij, Pandey (2008-05-25).
1092:s and with delegates, whereas
454:The Join operator performs an
1:
743:, with other languages like
651:Cast: converts a non-generic
589:elements match the predicate.
1442:and other .NET languages by
520:IGrouping<Key, Values>
2346:Windows Workflow Foundation
2334:Windows Identity Foundation
1898:Microsoft Developer Network
1868:Microsoft Developer Network
355:Standard query operator API
332:standard sequence operators
108:"Language Integrated Query"
2804:
1945:"ParallelEnumerable Class"
1892:Alva, Jaime (2010-08-06).
1568:"Standard Query Operators"
1416:as traditional types like
1401:, was integrated into it.
1393:. It was renamed Cω after
623:ToArray: Creates an array
535:Union / Intersect / Except
273:, pronounced "link") is a
18:
2524:
2415:
2289:Language Integrated Query
2107:
1841:Vider, Guy (2007-12-21).
1496:Object-relational mapping
1435:Joins Concurrency Library
425:Sum / Min / Max / Average
267:Language Integrated Query
253:
228:
172:Language Integrated Query
2278:Dynamic Language Runtime
2117:Libraries and frameworks
1643:"Query Expressions (F#)"
1454:Ports of LINQ exist for
1182:
938:
802:
637:ToDictionary: Creates a
328:standard query operators
2200:Framework Class Library
2189:Common Language Runtime
1862:Parsons, Jared (2008).
924:the types of variables
758:keyword. In VB9.0, the
2435:Native Image Generator
2430:.NET Compiler Platform
2151:.NET Compact Framework
1687:"Enumerable.ElementAt"
1426:concurrent programming
1359:ParallelQuery<T>
778:accessors and mutators
639:Dictionary<K, T>
447:higher-order funtion.
422:higher-order function.
409:higher-order function.
396:higher-order function.
392:. This implements the
2300:Microsoft Silverlight
2060:Future of LINQ to SQL
1707:"Enumerable.Contains"
1374:Predecessor languages
1150:databases, including
686:collection to one of
655:collection to one of
432:given as the lambda.
195:Microsoft Corporation
183:Microsoft Corporation
21:Linq (disambiguation)
2156:.NET Micro Framework
1363:IEnumerable<T>
1276:Microsoft SQL Server
1148:Microsoft SQL Server
1123:IEnumerable<T>
1102:Microsoft SQL Server
1090:IEnumerable<T>
696:IEnumerable<R>
692:IEnumerable<T>
688:IEnumerable<T>
669:IEnumerable<R>
665:IEnumerable<T>
657:IEnumerable<T>
644:ToLookup: Creates a
634:from the collection.
627:from the collection.
611:IEnumerable<T>
488:The Concat operator
317:relational databases
299:, which are akin to
93:improve this article
50:rewrite this article
2310:Parallel Extensions
1255:IQueryable<T>
1172:attributes such as
1121:pattern and allows
711:Language extensions
694:to another generic
667:to another generic
618:IQueryable<T>
173:
2014:2007-02-12 at the
1817:"LINQ to DataSets"
1727:"Enumerable.Count"
1589:"Enumerable Class"
1507:List comprehension
1444:Microsoft Research
1232:Visual Studio 2008
1152:SQL Server Compact
790:Lambda expressions
784:Object initializer
721:language construct
646:Lookup<K, T>
630:ToList: Creates a
340:lambda expressions
290:.NET Framework 3.5
2765:
2764:
2562:
2561:
2449:
2448:
2321:WCF Data Services
1321:
1320:
1264:stored procedures
780:for these fields.
500:OrderByDescending
386:lambda expression
363:The set of query
264:
263:
202:Typing discipline
169:
168:
161:
143:
67:
66:
43:a manual or guide
2795:
2778:.NET terminology
2589:
2582:
2575:
2566:
2552:
2551:
2542:
2541:
2532:
2531:
2367:
2224:Entity Framework
2094:
2087:
2080:
2071:
2038:
2037:
2035:
2034:
2024:
2018:
2006:
2000:
1999:
1981:
1975:
1974:
1972:
1971:
1961:
1955:
1954:
1952:
1951:
1941:
1935:
1934:
1932:
1931:
1920:
1914:
1913:
1905:
1904:
1889:
1883:
1882:
1875:
1874:
1859:
1853:
1852:
1850:
1849:
1838:
1832:
1831:
1829:
1828:
1819:. Archived from
1813:
1807:
1806:
1804:
1803:
1793:
1782:
1781:
1779:
1778:
1769:. Archived from
1763:
1757:
1756:
1754:
1753:
1743:
1737:
1736:
1734:
1733:
1723:
1717:
1716:
1714:
1713:
1703:
1697:
1696:
1694:
1693:
1683:
1677:
1676:
1674:
1673:
1667:"LINQ Framework"
1663:
1657:
1656:
1654:
1653:
1639:
1633:
1632:
1614:
1605:
1604:
1602:
1600:
1585:
1579:
1578:
1576:
1575:
1564:
1555:
1554:
1552:
1551:
1541:
1535:
1534:
1527:
1368:
1364:
1360:
1316:
1313:
1307:
1295:
1294:
1287:
1270:LINQ to DataSets
1256:
1252:
1248:
1244:
1229:
1222:
1219:
1216:
1213:
1210:
1207:
1204:
1201:
1198:
1195:
1192:
1189:
1186:
1170:relational model
1137:
1124:
1120:
1091:
1074:
1071:
1068:
1065:
1062:
1059:
1056:
1053:
1050:
1047:
1044:
1041:
1038:
1035:
1032:
1029:
1026:
1023:
1020:
1017:
1014:
1011:
1008:
1005:
1002:
999:
996:
993:
990:
987:
984:
981:
978:
975:
972:
969:
966:
963:
960:
957:
954:
951:
948:
945:
942:
920:
917:
914:
911:
908:
905:
902:
899:
896:
893:
890:
887:
884:
881:
878:
875:
872:
869:
866:
863:
860:
857:
854:
851:
848:
845:
842:
839:
836:
833:
830:
827:
824:
821:
818:
815:
812:
809:
806:
799:
761:
757:
705:
701:
697:
693:
689:
685:
678:
674:
670:
666:
662:
658:
654:
647:
640:
633:
626:
619:
612:
525:
521:
504:ThenByDescending
495:OrderBy / ThenBy
492:two collections.
473:Skip / SkipWhile
466:Take / TakeWhile
451:Join / GroupJoin
284:capabilities to
178:Designed by
174:
164:
157:
153:
150:
144:
142:
101:
77:
69:
62:
59:
53:
41:is written like
34:
33:
26:
2803:
2802:
2798:
2797:
2796:
2794:
2793:
2792:
2788:XML data access
2783:Query languages
2768:
2767:
2766:
2761:
2745:
2724:
2598:
2596:Query languages
2593:
2563:
2558:
2520:
2506:.NET Foundation
2494:
2445:
2411:
2388:
2356:
2205:
2175:
2144:Version history
2126:Implementations
2121:
2103:
2098:
2046:
2041:
2032:
2030:
2026:
2025:
2021:
2016:Wayback Machine
2007:
2003:
1996:
1983:
1982:
1978:
1969:
1967:
1963:
1962:
1958:
1949:
1947:
1943:
1942:
1938:
1929:
1927:
1922:
1921:
1917:
1902:
1900:
1891:
1890:
1886:
1872:
1870:
1861:
1860:
1856:
1847:
1845:
1840:
1839:
1835:
1826:
1824:
1815:
1814:
1810:
1801:
1799:
1795:
1794:
1785:
1776:
1774:
1765:
1764:
1760:
1751:
1749:
1745:
1744:
1740:
1731:
1729:
1725:
1724:
1720:
1711:
1709:
1705:
1704:
1700:
1691:
1689:
1685:
1684:
1680:
1671:
1669:
1665:
1664:
1660:
1651:
1649:
1641:
1640:
1636:
1629:
1616:
1615:
1608:
1598:
1596:
1587:
1586:
1582:
1573:
1571:
1566:
1565:
1558:
1549:
1547:
1543:
1542:
1538:
1529:
1528:
1524:
1520:
1512:Lazy evaluation
1492:
1452:
1376:
1366:
1362:
1358:
1343:
1325:LINQ to Objects
1317:
1311:
1308:
1305:
1296:
1292:
1285:
1272:
1254:
1250:
1246:
1242:
1236:database schema
1227:
1224:
1223:
1220:
1217:
1214:
1211:
1208:
1205:
1202:
1199:
1196:
1193:
1190:
1187:
1184:
1180:. For example,
1161:relational data
1144:
1135:
1132:
1122:
1118:
1114:
1112:LINQ to Objects
1089:
1086:LINQ to Objects
1081:
1076:
1075:
1072:
1069:
1066:
1063:
1060:
1057:
1054:
1051:
1048:
1045:
1042:
1039:
1036:
1033:
1030:
1027:
1024:
1021:
1018:
1015:
1012:
1009:
1006:
1003:
1000:
997:
994:
991:
988:
985:
982:
979:
976:
973:
970:
967:
964:
961:
958:
955:
952:
949:
946:
943:
940:
922:
921:
918:
915:
912:
909:
906:
903:
900:
897:
894:
891:
888:
885:
882:
879:
876:
873:
870:
867:
864:
861:
858:
855:
852:
849:
846:
843:
840:
837:
834:
831:
828:
825:
822:
819:
816:
813:
810:
807:
804:
797:
774:Anonymous types
759:
755:
725:syntactic sugar
713:
703:
699:
695:
691:
687:
683:
676:
672:
668:
664:
660:
656:
652:
645:
638:
631:
624:
617:
610:
572:SingleOrDefault
523:
519:
357:
352:
344:anonymous types
223:implementations
165:
154:
148:
145:
102:
100:
90:
78:
63:
57:
54:
47:
35:
31:
24:
17:
12:
11:
5:
2801:
2799:
2791:
2790:
2785:
2780:
2770:
2769:
2763:
2762:
2760:
2759:
2753:
2751:
2747:
2746:
2744:
2743:
2738:
2732:
2730:
2726:
2725:
2723:
2722:
2717:
2712:
2707:
2702:
2697:
2692:
2687:
2682:
2677:
2672:
2667:
2662:
2657:
2652:
2647:
2642:
2637:
2632:
2627:
2622:
2617:
2612:
2606:
2604:
2603:In current use
2600:
2599:
2594:
2592:
2591:
2584:
2577:
2569:
2560:
2559:
2557:
2556:
2546:
2536:
2525:
2522:
2521:
2519:
2518:
2513:
2508:
2502:
2500:
2496:
2495:
2493:
2492:
2490:Xamarin Studio
2487:
2482:
2477:
2476:
2475:
2470:
2459:
2457:
2451:
2450:
2447:
2446:
2444:
2443:
2438:
2432:
2427:
2422:
2416:
2413:
2412:
2410:
2409:
2404:
2398:
2396:
2390:
2389:
2387:
2386:
2381:
2379:.NET Reflector
2375:
2373:
2364:
2358:
2357:
2355:
2354:
2349:
2343:
2337:
2331:
2325:
2324:
2323:
2312:
2307:
2302:
2297:
2292:
2286:
2280:
2275:
2270:
2265:
2264:
2263:
2258:
2253:
2248:
2243:
2238:
2228:
2227:
2226:
2215:
2213:
2207:
2206:
2204:
2203:
2197:
2192:
2185:
2183:
2177:
2176:
2174:
2173:
2168:
2163:
2158:
2153:
2148:
2147:
2146:
2139:.NET Framework
2136:
2129:
2127:
2123:
2122:
2120:
2119:
2114:
2108:
2105:
2104:
2099:
2097:
2096:
2089:
2082:
2074:
2068:
2067:
2062:
2057:
2052:
2045:
2044:External links
2042:
2040:
2039:
2019:
2001:
1994:
1986:LINQ in Action
1976:
1956:
1936:
1915:
1884:
1854:
1833:
1808:
1783:
1758:
1738:
1718:
1698:
1678:
1658:
1647:Microsoft Docs
1634:
1628:978-1617294532
1627:
1606:
1580:
1556:
1536:
1531:"Rx framework"
1521:
1519:
1516:
1515:
1514:
1509:
1504:
1499:
1491:
1488:
1451:
1448:
1389:(X Sharp) and
1375:
1372:
1342:
1339:
1319:
1318:
1299:
1297:
1290:
1284:
1281:
1271:
1268:
1251:Table<T>
1247:Table<T>
1183:
1143:
1140:
1131:
1128:
1113:
1110:
1080:
1079:LINQ providers
1077:
950:SomeCollection
939:
823:SomeCollection
803:
800:less than 10,
794:
793:
787:
781:
771:
768:type inference
764:strongly typed
752:
712:
709:
708:
707:
680:
649:
642:
635:
628:
621:
614:
603:
602:
599:
596:
593:
590:
586:
583:
580:
577:
573:
570:
567:
564:
560:
557:
554:
551:
536:
533:
530:
527:
516:
513:
510:
507:
496:
493:
486:
483:
480:
477:
474:
471:
467:
464:
452:
440:
439:
437:
429:
428:
426:
423:
415:
413:
410:
402:
400:
397:
378:
376:
356:
353:
351:
348:
286:.NET languages
278:.NET Framework
262:
261:
251:
250:
246:
245:
230:.NET languages
226:
225:
218:
217:
212:
208:
207:
206:Strongly typed
204:
198:
197:
192:
186:
185:
180:
167:
166:
149:September 2024
81:
79:
72:
65:
64:
58:September 2024
38:
36:
29:
15:
13:
10:
9:
6:
4:
3:
2:
2800:
2789:
2786:
2784:
2781:
2779:
2776:
2775:
2773:
2758:
2755:
2754:
2752:
2748:
2742:
2739:
2737:
2734:
2733:
2731:
2727:
2721:
2718:
2716:
2713:
2711:
2708:
2706:
2703:
2701:
2698:
2696:
2693:
2691:
2688:
2686:
2683:
2681:
2678:
2676:
2673:
2671:
2668:
2666:
2663:
2661:
2658:
2656:
2653:
2651:
2648:
2646:
2643:
2641:
2638:
2636:
2633:
2631:
2628:
2626:
2623:
2621:
2618:
2616:
2613:
2611:
2608:
2607:
2605:
2601:
2597:
2590:
2585:
2583:
2578:
2576:
2571:
2570:
2567:
2555:
2547:
2545:
2537:
2535:
2527:
2526:
2523:
2517:
2514:
2512:
2509:
2507:
2504:
2503:
2501:
2499:Organizations
2497:
2491:
2488:
2486:
2483:
2481:
2478:
2474:
2471:
2469:
2466:
2465:
2464:
2463:Visual Studio
2461:
2460:
2458:
2456:
2452:
2442:
2439:
2436:
2433:
2431:
2428:
2426:
2423:
2421:
2418:
2417:
2414:
2408:
2407:SmartAssembly
2405:
2403:
2400:
2399:
2397:
2395:
2391:
2385:
2382:
2380:
2377:
2376:
2374:
2372:
2368:
2365:
2363:
2359:
2353:
2352:.NET Remoting
2350:
2347:
2344:
2341:
2338:
2335:
2332:
2329:
2328:Windows Forms
2326:
2322:
2319:
2318:
2316:
2313:
2311:
2308:
2306:
2305:Microsoft XNA
2303:
2301:
2298:
2296:
2293:
2290:
2287:
2284:
2281:
2279:
2276:
2274:
2271:
2269:
2266:
2262:
2259:
2257:
2254:
2252:
2249:
2247:
2244:
2242:
2239:
2237:
2234:
2233:
2232:
2229:
2225:
2222:
2221:
2220:
2217:
2216:
2214:
2212:
2208:
2201:
2198:
2196:
2193:
2190:
2187:
2186:
2184:
2182:
2178:
2172:
2171:XNA Framework
2169:
2167:
2164:
2162:
2159:
2157:
2154:
2152:
2149:
2145:
2142:
2141:
2140:
2137:
2134:
2131:
2130:
2128:
2124:
2118:
2115:
2113:
2112:.NET strategy
2110:
2109:
2106:
2102:
2095:
2090:
2088:
2083:
2081:
2076:
2075:
2072:
2066:
2063:
2061:
2058:
2056:
2053:
2051:
2048:
2047:
2043:
2029:
2023:
2020:
2017:
2013:
2010:
2005:
2002:
1997:
1995:9781638354628
1991:
1987:
1980:
1977:
1966:
1960:
1957:
1946:
1940:
1937:
1926:
1919:
1916:
1912:
1911:
1899:
1895:
1888:
1885:
1881:
1880:
1869:
1865:
1858:
1855:
1844:
1837:
1834:
1823:on 2013-01-25
1822:
1818:
1812:
1809:
1798:
1792:
1790:
1788:
1784:
1773:on 2013-01-25
1772:
1768:
1767:"LINQ to SQL"
1762:
1759:
1748:
1742:
1739:
1728:
1722:
1719:
1708:
1702:
1699:
1688:
1682:
1679:
1668:
1662:
1659:
1648:
1644:
1638:
1635:
1630:
1624:
1620:
1613:
1611:
1607:
1594:
1590:
1584:
1581:
1569:
1563:
1561:
1557:
1546:
1540:
1537:
1532:
1526:
1523:
1517:
1513:
1510:
1508:
1505:
1503:
1500:
1497:
1494:
1493:
1489:
1487:
1485:
1481:
1477:
1473:
1469:
1465:
1461:
1457:
1449:
1447:
1445:
1441:
1437:
1436:
1429:
1427:
1423:
1419:
1415:
1411:
1407:
1402:
1400:
1399:join calculus
1396:
1395:Polyphonic C#
1392:
1388:
1385:
1381:
1373:
1371:
1356:
1352:
1351:Parallel LINQ
1348:
1340:
1338:
1336:
1332:
1328:
1326:
1315:
1312:November 2021
1303:
1298:
1289:
1288:
1282:
1280:
1277:
1269:
1267:
1265:
1260:
1239:
1237:
1233:
1181:
1179:
1175:
1171:
1166:
1162:
1158:
1153:
1149:
1141:
1139:
1129:
1127:
1111:
1109:
1107:
1103:
1097:
1095:
1087:
1078:
1025:OtherProperty
937:
935:
931:
927:
871:OtherProperty
801:
791:
788:
785:
782:
779:
775:
772:
769:
765:
753:
750:
749:
748:
746:
742:
738:
734:
730:
726:
722:
718:
710:
681:
650:
643:
636:
632:List<T>
629:
622:
615:
608:
607:
606:
600:
597:
594:
591:
587:
584:
581:
578:
574:
571:
568:
565:
561:
558:
555:
553:SequenceEqual
552:
549:
545:
541:
537:
534:
531:
528:
517:
514:
511:
508:
505:
501:
497:
494:
491:
487:
484:
481:
478:
475:
472:
468:
465:
462:
457:
453:
450:
449:
448:
446:
438:
435:
434:
433:
427:
424:
421:
416:
414:
411:
408:
403:
401:
398:
395:
391:
387:
383:
379:
377:
374:
373:
372:
370:
366:
361:
354:
349:
347:
345:
341:
337:
333:
329:
325:
322:
318:
314:
310:
307:, enumerable
306:
302:
298:
293:
291:
287:
283:
279:
276:
272:
268:
260:
256:
252:
249:Influenced by
247:
243:
239:
235:
231:
227:
224:
219:
216:
213:
209:
205:
203:
199:
196:
193:
191:
187:
184:
181:
179:
175:
163:
160:
152:
141:
138:
134:
131:
127:
124:
120:
117:
113:
110: –
109:
105:
104:Find sources:
98:
94:
88:
87:
82:This article
80:
76:
71:
70:
61:
51:
46:
44:
39:This article
37:
28:
27:
22:
2740:
2664:
2485:SharpDevelop
2420:CLR Profiler
2288:
2251:Dynamic Data
2181:Architecture
2031:. Retrieved
2022:
2004:
1985:
1979:
1968:. Retrieved
1959:
1948:. Retrieved
1939:
1928:. Retrieved
1918:
1908:
1907:
1901:. Retrieved
1887:
1878:
1877:
1871:. Retrieved
1857:
1846:. Retrieved
1836:
1825:. Retrieved
1821:the original
1811:
1800:. Retrieved
1775:. Retrieved
1771:the original
1761:
1750:. Retrieved
1741:
1730:. Retrieved
1721:
1710:. Retrieved
1701:
1690:. Retrieved
1681:
1670:. Retrieved
1661:
1650:. Retrieved
1646:
1637:
1618:
1617:Skeet, Jon.
1597:. Retrieved
1592:
1583:
1572:. Retrieved
1548:. Retrieved
1539:
1525:
1480:ActionScript
1453:
1434:
1430:
1403:
1394:
1390:
1386:
1379:
1377:
1350:
1344:
1334:
1330:
1329:
1324:
1322:
1309:
1301:
1273:
1240:
1225:
1174:primary keys
1145:
1133:
1115:
1098:
1093:
1085:
1082:
1013:SomeProperty
974:SomeProperty
933:
929:
925:
923:
859:SomeProperty
835:SomeProperty
798:SomeProperty
795:
723:and provide
714:
604:
544:intersection
503:
499:
490:concatenates
441:
430:
362:
358:
350:Architecture
336:fluent-style
331:
327:
294:
270:
266:
265:
155:
146:
136:
129:
122:
115:
103:
91:Please help
86:verification
83:
55:
48:Please help
40:
2729:Proprietary
2480:MonoDevelop
2402:Dotfuscator
2394:Obfuscators
2371:Decompilers
2195:COM Interop
1621:. Manning.
1619:C# in Depth
1599:15 February
1595:. Microsoft
1570:. Microsoft
1414:type safety
1335:LINQ to SQL
1331:LINQ to XML
1283:Performance
1243:DataContext
1104:databases,
1094:LINQ to SQL
684:IEnumerable
653:IEnumerable
315:documents,
297:expressions
2772:Categories
2750:Superseded
2330:(WinForms)
2211:Components
2033:2007-06-08
1970:2007-10-16
1950:2014-05-07
1930:2009-02-08
1903:2014-03-19
1873:2014-03-19
1848:2009-02-08
1827:2007-11-30
1802:2007-11-30
1777:2007-11-30
1752:2007-11-30
1732:2014-05-07
1712:2014-05-07
1692:2014-05-07
1672:2007-11-30
1652:2012-12-19
1574:2007-11-30
1550:2009-11-21
1518:References
1484:ActionLinq
1472:TypeScript
1464:JavaScript
1178:attributes
548:difference
461:group join
456:inner join
412:SelectMany
382:projection
119:newspapers
2511:Microsoft
2273:ClickOnce
2236:Web Forms
1406:databases
1384:codenames
1228:Customers
1088:works on
1058:WriteLine
907:WriteLine
585:Any / All
579:ElementAt
576:returned.
524:IGrouping
436:Aggregate
365:operators
292:in 2007.
275:Microsoft
190:Developer
2534:Category
2268:Avalonia
2012:Archived
1490:See also
1355:parallel
1215:CustName
1191:Customer
1136:XElement
1119:Sequence
1070:ToString
702:to type
675:to type
592:Contains
529:Distinct
390:delegate
282:querying
2757:CODASYL
2650:Gremlin
2645:GraphQL
2640:Datalog
2554:Commons
2516:Xamarin
2473:Express
2441:XAMLPad
2384:dotPeek
2231:ASP.NET
2219:ADO.NET
1478:), and
1476:linq.ts
1468:linq.js
1460:PHPLinq
1418:strings
1302:updated
1106:ADO.NET
1052:Console
1037:ForEach
1031:results
944:results
934:results
901:Console
892:results
877:foreach
808:results
745:Nemerle
741:Oxygene
717:library
515:GroupBy
509:Reverse
324:parsers
321:monadic
309:classes
259:Haskell
211:Website
133:scholar
2710:XQuery
2700:SPARQL
2695:SMARTS
2625:Cypher
2437:(NGen)
2317:(WCF)
2291:(LINQ)
2285:(XAML)
2161:DotGNU
2135:(Core)
1992:
1910:faster
1625:
1438:, for
1422:arrays
1212:string
1209:public
1203:CustID
1197:public
1185:public
1165:mapped
1073:());})
989:Select
926:result
913:result
886:result
844:select
733:VB 9.0
566:Single
485:Concat
479:OfType
407:Filter
375:Select
305:arrays
242:VB.NET
221:Major
135:
128:
121:
114:
106:
2715:XPath
2615:ALPHA
2468:Blend
2425:ILAsm
2362:Tools
2342:(WPF)
2336:(WIF)
2261:Razor
2202:(FCL)
2191:(CLR)
1498:(ORM)
1450:Ports
1349:, or
1347:PLINQ
1341:PLINQ
1259:T-SQL
1188:class
1046:=>
998:=>
965:=>
956:Where
826:where
731:3.0,
598:Count
540:union
399:Where
330:, or
140:JSTOR
126:books
2741:LINQ
2690:QUEL
2665:LINQ
2660:LDAP
2655:ISBL
2544:List
2455:IDEs
2348:(WF)
2246:Core
2241:AJAX
2166:Mono
2133:.NET
2101:.NET
1990:ISBN
1623:ISBN
1601:2014
1593:msdn
1420:and
1408:and
1353:, a
1333:and
977:<
932:and
838:<
814:from
739:and
546:and
470:it).
445:Fold
420:bind
346:.
342:and
271:LINQ
112:news
2736:YQL
2720:YQL
2705:SQL
2685:OCL
2680:OQL
2675:MDX
2670:MQL
2635:DMX
2630:DAX
2620:CQL
2610:.QL
2256:MVC
1470:),
1462:),
1456:PHP
1410:XML
1391:Xen
1200:int
1157:SQL
1028:});
1001:new
941:var
883:var
847:new
805:var
760:Dim
756:var
394:Map
369:API
313:XML
301:SQL
255:SQL
95:by
2774::
1906:.
1896:.
1876:.
1866:.
1786:^
1645:.
1609:^
1591:.
1559:^
1446:.
1440:C#
1387:X#
1380:Cω
980:10
928:,
916:);
889:in
874:};
841:10
820:in
737:F#
735:,
729:C#
542:,
311:,
257:,
240:,
238:F#
236:,
234:C#
2588:e
2581:t
2574:v
2093:e
2086:t
2079:v
2036:.
1998:.
1973:.
1953:.
1933:.
1851:.
1830:.
1805:.
1780:.
1755:.
1735:.
1715:.
1695:.
1675:.
1655:.
1631:.
1603:.
1577:.
1553:.
1533:.
1482:(
1474:(
1466:(
1458:(
1314:)
1310:(
1221:}
1218:;
1206:;
1194:{
1067:.
1064:x
1061:(
1055:.
1049:{
1043:x
1040:(
1034:.
1022:.
1019:c
1016:,
1010:.
1007:c
1004:{
995:c
992:(
986:.
983:)
971:.
968:c
962:c
959:(
953:.
947:=
930:c
919:}
910:(
904:.
898:{
895:)
880:(
868:.
865:c
862:,
856:.
853:c
850:{
832:.
829:c
817:c
811:=
704:R
700:T
677:R
673:T
661:T
625:T
620:.
613:.
269:(
244:)
232:(
162:)
156:(
151:)
147:(
137:·
130:·
123:·
116:·
89:.
60:)
56:(
45:.
23:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.