Knowledge (XXG)

Language Integrated Query

Source 📝

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

Index

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
querying

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