Knowledge (XXG)

Language Integrated Query

Source 📝

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:)

Index

LINQ
Linq (disambiguation)
a manual or guide
rewrite this article

verification
improve this article
adding citations to reliable sources
"Language Integrated Query"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Designed by
Microsoft Corporation
Developer
Microsoft Corporation
Typing discipline
https://learn.microsoft.com/en-us/dotnet/standard/linq/
implementations
.NET languages
C#
F#
VB.NET
SQL
Haskell
Microsoft
.NET Framework

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.