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