<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>All About Interop : LINQ</title><link>http://blogs.msdn.com/dotnetinterop/archive/tags/LINQ/default.aspx</link><description>Tags: LINQ</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Many many LINQ Providers</title><link>http://blogs.msdn.com/dotnetinterop/archive/2008/09/12/many-many-linq-providers.aspx</link><pubDate>Fri, 12 Sep 2008 18:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8945843</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/8945843.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=8945843</wfw:commentRss><description>&lt;P&gt;When LINQ shipped, it included a provider model, to encourage people to make other systems and data stores accessible from the coolness-that-is-LINQ.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Back in February, Charlie Calvert published a&amp;nbsp; &lt;A class="" href="http://blogs.msdn.com/charlie/archive/2008/02/28/link-to-everything-a-list-of-linq-providers.aspx" mce_href="http://blogs.msdn.com/charlie/archive/2008/02/28/link-to-everything-a-list-of-linq-providers.aspx"&gt;long list of&amp;nbsp;LINQ providers&lt;/A&gt;.&amp;nbsp; In July, Robert Shelton later&amp;nbsp;&lt;A class="" href="http://www.sheltonblog.com/archive/2008/07/11/list-of-linq-providers.aspx" mce_href="http://www.sheltonblog.com/archive/2008/07/11/list-of-linq-providers.aspx"&gt;reblogged it&lt;/A&gt;.&amp;nbsp; Charlie also has a &lt;A class="" href="http://blogs.msdn.com/charlie/archive/2006/10/05/Links-to-LINQ.aspx" mce_href="http://blogs.msdn.com/charlie/archive/2006/10/05/Links-to-LINQ.aspx"&gt;list of LINQ Links&lt;/A&gt;.&amp;nbsp; Nice to see.&amp;nbsp; By my count there are 33 different LINQ providers listed.&amp;nbsp; I'll bet there are more by now. &lt;/P&gt;
&lt;P&gt;You can also &lt;A class="" href="http://search.msn.com/results.aspx?q=linq+providers&amp;amp;form=QBRE3" mce_href="http://search.msn.com/results.aspx?q=linq+providers&amp;amp;form=QBRE3"&gt;search for more&lt;/A&gt;&amp;nbsp;on LINQ providers. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8945843" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Providers/default.aspx">Providers</category></item><item><title>LINQ and interop with other (non-Microsoft) databases</title><link>http://blogs.msdn.com/dotnetinterop/archive/2007/05/22/linq-and-interop-with-other-non-microsoft-databases.aspx</link><pubDate>Tue, 22 May 2007 20:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2797337</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/2797337.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=2797337</wfw:commentRss><description>&lt;P&gt;This topic came up on an internal mailing list at Microsoft. &lt;/P&gt;
&lt;P&gt;The question is, &lt;STRONG&gt;will LINQ be usable with databases other than Microsoft SQL Server&lt;/STRONG&gt;?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Before we answer that, first of all let us understand, what is LINQ?&amp;nbsp; &lt;/P&gt;
&lt;H3&gt;What is LINQ?&lt;/H3&gt;
&lt;P&gt;LINQ is Microsoft’s Language Integrated Query.&amp;nbsp; It&amp;nbsp;is a set of extensions to the .NET Framework that provide common capabilities within the programming language for querying against in-memory data as well as external data sources. I had posted previously on LINQ, &lt;A href="http://blogs.msdn.com/dotnetinterop/archive/2007/01/12/linq-the-january-ctp-is-out.aspx" mce_href="http://blogs.msdn.com/dotnetinterop/archive/2007/01/12/linq-the-january-ctp-is-out.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;This is pretty cool when you understand the implications. Rather than writing a for loop to scroll through a collection of objects, imagine if you could apply a query to the collection itself, to select some of the members of the collection, based on criteria you define.&amp;nbsp; Imagine getting the query verbs you know and love from a RDBMS, but applying those things to random collections of objects, whether or not those objects were persisted in or retrieved from a database.&amp;nbsp; This is what LINQ can provide.&lt;/P&gt;
&lt;H3&gt;When does LINQ become available? &lt;/H3&gt;
&lt;P&gt;LINQ will ship with the .NET Framework v3.5, which was previously code-named the "Orcas" release. (My esteemed colleague &lt;A class="" href="http://blogs.msdn.com/pandrew" mce_href="http://blogs.msdn.com/pandrew"&gt;Paul Andrew&lt;/A&gt; &lt;A class="" href="http://blogs.msdn.com/pandrew/archive/2007/03/01/net-framework-3-5-makes-first-appearance-in-ctp.aspx" mce_href="http://blogs.msdn.com/pandrew/archive/2007/03/01/net-framework-3-5-makes-first-appearance-in-ctp.aspx"&gt;blogged earlier about the content in the .NET Framework v3.5&lt;/A&gt;.)&amp;nbsp; The .NET Framework v3.5 ("Orcas") will ship before the end of 2007; an update of Visual Studio will also ship at the same time.&amp;nbsp; As with prior versions of the .NET Framework, the .NET Framework redistributable and SDK will be separately downloadable items.&amp;nbsp; In other words, you can just use the SDK and the command line tools to build apps, but the visual toolset will add significant value. &lt;/P&gt;
&lt;P&gt;As for the LINQ stuff in Orcas, originally the plan called for LINQ over Objects (query on arbitrary object collections),&amp;nbsp;&lt;A class="" href="http://search.msn.com/results.aspx?q=LINQ-to-XML&amp;amp;FORM=QBHP" mce_href="http://search.msn.com/results.aspx?q=LINQ-to-XML&amp;amp;FORM=QBHP"&gt;LINQ-to-XML&lt;/A&gt;&amp;nbsp;(query over&amp;nbsp;data derived from XML), LINQ-to-Datasets (you get the idea),&amp;nbsp;as well as &lt;A class="" href="http://search.msn.com/results.aspx?q=LINQ-to-SQL&amp;amp;form=QBRE" mce_href="http://search.msn.com/results.aspx?q=LINQ-to-SQL&amp;amp;form=QBRE"&gt;LINQ-to-SQL&lt;/A&gt;.&amp;nbsp;&amp;nbsp; Later we added LINQ-to-Entities into the plan for Orcas; this would be possible with the inclusion of the ADO.NET Entity Framework in Orcas as well.&amp;nbsp; (but as Microsoft's Mike Pizzo notes, &lt;A class="" href="http://blogs.msdn.com/adonet/archive/2007/04/28/ado-net-entity-framework-update.aspx" mce_href="http://blogs.msdn.com/adonet/archive/2007/04/28/ado-net-entity-framework-update.aspx"&gt;the ADO.NET Entity Framework has since been removed from Orcas!&lt;/A&gt;).&amp;nbsp; You can read about the ADO.NET Entity Framework &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx"&gt;here&lt;/A&gt;.&amp;nbsp; So to summarize, LINQ is in Orcas, the .NET Framework v3.5, which will release before the end of 2007.&amp;nbsp; Also, the LINQ stuff in Orcas will not include Linq-to-Entities. &lt;/P&gt;
&lt;P&gt;You can read Mike Pizzo's post yourself; here is the summary:&amp;nbsp; &lt;EM&gt;We considered the ADO.NET Entity Framework important and big enough that we've decided to&amp;nbsp;get it right, with good tools support, which meant holding it for release until after Orcas.&lt;/EM&gt;&amp;nbsp; This of course&amp;nbsp;is why the the LINQ support for the Entity Framework won't ship in Orcas either!&amp;nbsp; The ADO.NET Entity Framework (including LINQ to Entities support) will be marketed with SQL Server "Katmai" (read &lt;A class="" href="http://www.microsoft.com/presspass/press/2007/may07/05-09KatmaiPR.mspx"&gt;the press release&lt;/A&gt;, or check &lt;A class="" href="http://download.microsoft.com/download/B/F/2/BF24C54E-5635-4C79-AFB4-0C3F840E79F4/Katmai_datasheet_Final.pdf"&gt;the datasheet&lt;/A&gt;), and will ship at the same time (first half 2008), but the two will not be technically linqed ;).&amp;nbsp; The ADO.NET Entity Framework will ship as an update to the .NET Framework, which is generally available to developers.&amp;nbsp; Using the update will not require SQL Server "Katmai" to be installed.&lt;/P&gt;
&lt;H3&gt;Where does the interop part come in?&lt;/H3&gt;
&lt;P&gt;Why are you reading all about LINQ on an interop blog?&amp;nbsp; Here's the interop part: The LINQ-to-Entities that ships in Orcas+1 as part of the ADO.NET Entity Framework will include a provider model.&amp;nbsp; What this means is that there will be multiple providers for multiple stores.&amp;nbsp; Lance Olson tells me: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;We’ve been working with a significant number of &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/adonet/archive/2006/08/25/724491.aspx"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;3&lt;SUP&gt;rd&lt;/SUP&gt; party provider&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; writers for more than a year now to ensure that support for all major databases is available for LINQ to Entities at RTM (RTM of Orcas+1 !! -dino)&amp;nbsp; .&amp;nbsp; LINQ to Entities is built on an extension of the ADO.NET 2.0 provider model so provider writers just need to update their 2.0 providers to support a new interface in order to get LINQ support.&amp;nbsp; &lt;/FONT&gt;&lt;A href="http://sqlite.phxsoftware.com/blogs/sqlite/archive/2006/08/03/1725.aspx"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;SQLLite has an open source provider&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; on the web today working against Beta 1 for example.&amp;nbsp; A number of these partners are planning to attend Tech Ed and will be announcing their support and demonstrating working providers there.&amp;nbsp; We’re obviously very excited to be able to show such broad support for LINQ. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So, look for good interop support in LINQ-to-Entities, which is coming in the first half of 2008. &lt;/P&gt;
&lt;P&gt;Next obvious question - what about a public provider model for LINQ-to-SQL, which would enable LINQ-to-any-other-RDBMS?&amp;nbsp; We have not announced plans in that direction.&amp;nbsp; We think the LINQ-to-Entities &lt;/P&gt;
&lt;P&gt;other relevant posts:&lt;BR&gt;&lt;A href="http://blogs.msdn.com/data/archive/2007/04/28/microsoft-s-data-access-strategy.aspx"&gt;http://blogs.msdn.com/data/archive/2007/04/28/microsoft-s-data-access-strategy.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;-Dino&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2797337" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ versus DataSet ?</title><link>http://blogs.msdn.com/dotnetinterop/archive/2007/02/15/linq-versus-dataset.aspx</link><pubDate>Thu, 15 Feb 2007 21:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1685247</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/1685247.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=1685247</wfw:commentRss><description>&lt;P&gt;Today, someone asked on an internal mailing list, what does LINQ offer, than I cannot do with DataSet.Select()? &lt;/P&gt;
&lt;P&gt;Luca Bolognese, my compadre from the old country, provided a clear and insightful response.&amp;nbsp; Just for some background - &lt;A class="" href="http://msdn.microsoft.com/data/ref/linq/" mce_href="http://msdn.microsoft.com/data/ref/linq/"&gt;LINQ&lt;/A&gt; is a codename for a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. Language-integrated query means, the query "verb" is built-in to the language itself.&amp;nbsp; It is not a query library; it is integrated into the language.&amp;nbsp; So you can do queries across in-memory&amp;nbsp;graph of objects, as easily as you might send a query to a database to retrieve results.&amp;nbsp;&amp;nbsp; Here is Luca's response:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Tahoma','sans-serif'"&gt;[DataSet.Select() and LINQ] are very different.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0in" type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: blue; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;The dataset is an in-memory &lt;U&gt;relational representation of data&lt;/U&gt;, Select works against this in-memory representation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: blue; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;An object model is, well, an &lt;U&gt;in-memory graph of objects&lt;/U&gt;. LINQ query works over this object view.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: blue; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Select takes a string as input, so it is not strongly typed; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;LINQ queries are strongly typed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: blue; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;LINQ queries work seamlessly across domains, you can submit the same query against in-memory objects, databases or, also, a dataset.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Tahoma','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Tahoma','sans-serif'"&gt;If you know at compile time the structure of your query and you are working with datasets, I suggest you investigate “LINQ to DataSet”. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;By the way, here's the blog post he mentioned, &lt;A class="" href="http://blogs.msdn.com/adonet/archive/2007/01/26/querying-datasets-introduction-to-linq-to-dataset.aspx" mce_href="http://blogs.msdn.com/adonet/archive/2007/01/26/querying-datasets-introduction-to-linq-to-dataset.aspx"&gt;LINQ-to-DataSet&lt;/A&gt;. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1685247" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Not+Really+Interop/default.aspx">Not Really Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>LINQ: the January CTP is out.  </title><link>http://blogs.msdn.com/dotnetinterop/archive/2007/01/12/linq-the-january-ctp-is-out.aspx</link><pubDate>Sat, 13 Jan 2007 01:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1457537</guid><dc:creator>DotNetInterop</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dotnetinterop/comments/1457537.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dotnetinterop/commentrss.aspx?PostID=1457537</wfw:commentRss><description>&lt;P&gt;The January CTP for the next version of Visual Studio, code-named "Orcas"&amp;nbsp;is &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=69055927-458B-4129-9047-FCC4FACAE96C&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=69055927-458B-4129-9047-FCC4FACAE96C&amp;amp;displaylang=en"&gt;now available&lt;/A&gt;.&amp;nbsp; By CTP, Microsoft implies a &lt;EM&gt;Community Technology Preview&lt;/EM&gt; - it is essentially a lightweight beta ship vehicle for a future product.&amp;nbsp;By shipping this preview, Microsoft is trying to solicit&amp;nbsp;feedback on the feature set ("I really like having that new dial to adjust my frimble."), on the realization of those features ("I like having that lever, but when I flip it this other thingy comes loose."), and on the&amp;nbsp;prioritization of features ("The new dial makes my life easier, but I don't find much use for that new lever you've added.")&amp;nbsp;&amp;nbsp;The main highlights of this CTP are the new ADO.NET stuff (including the Entity Data Model) and the latest &lt;A class="" href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx" mce_href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/A&gt; bits.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;You might ask, just what is this LINQ thing?&amp;nbsp; LINQ, the name, derives from "Language Integrated Query."&amp;nbsp;&amp;nbsp; LINQ is a codename for a&lt;EM&gt; set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with native language syntax for queries and provides class libraries to take advantage of these capabilities.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;I took that description right from the main LINQ page on MSDN.&amp;nbsp; Let me&amp;nbsp;decompose that a little, because it's sort of dense.&amp;nbsp; It makes sense if you already know what LINQ is, but if you come into it without any prior knowledge, I'm not so sure it clarifies anything. &lt;/P&gt;
&lt;P&gt;First, LINQ is a set of extensions to a couple .NET languages, as well as to the base framework (or base class library).&amp;nbsp; It's important to realize that LINQ is &lt;EM&gt;not just a new class library&lt;/EM&gt;.&amp;nbsp; LINQ also implies language syntax changes.&amp;nbsp; You might be a skeptic and say, languages schmanguages - they're all Turing-complete, right?&amp;nbsp; But no one who looks at Perl, T-SQL, and C# could avoid the conclusion that different languages have different balance points - they are optimized for different things. What LINQ is doing is extending the existing language syntax that we know and love in C# and VB today, to add some new stuff. &lt;/P&gt;
&lt;P&gt;New stuff to do &lt;EM&gt;what&lt;/EM&gt;? Ahh, to do query, set and transform operations.&amp;nbsp; A query, like "Give me all the customers who ordered $10000 worth of product last month."&amp;nbsp;&amp;nbsp; Today,&amp;nbsp;querying data is done differently,&amp;nbsp;depending on where you get your data.&amp;nbsp; If your data is in a relational database, then you use the DBMS query engine to do the queries.&amp;nbsp;&amp;nbsp;You write some SQL code as a string and send it to the database and it gives you rows of data back.&amp;nbsp; (if you are an EJB programmer, then you write an EJBQL string, and a findByXxx method and a bunch of other stuff.&amp;nbsp;)&amp;nbsp;&amp;nbsp; On the other hand if you have your data in an XML document, then you can perform XPath or XQuery on it.&amp;nbsp; Finally if you have your data in a plain old in-memory collection of objects, you may have to manually iterate through the collection to extract the data items that match your constraints.&amp;nbsp; &lt;STRONG&gt;foreach &lt;/STRONG&gt;anyone?&lt;/P&gt;
&lt;P&gt;What LINQ attempts to do is standardize the way these queries are performed, regardless of the datasource, and secondly, to add query as a language feature, so that developers can get all the benefits (intellisense, and so on) of that.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For years different teams and projects in the software industry have grappled with the problem of object-relational mapping.&amp;nbsp; The whole point was to save time in development. We all realize that much (most?) of the world's &lt;EM&gt;&lt;STRONG&gt;transactional&lt;/STRONG&gt;&lt;/EM&gt; data is stored in relational stores, and most new app development is done in object-oriented languages.&amp;nbsp; So the challenge we've been grappling with has been, how to map the relational data to an in-memory object state, in effect making it simpler and easier for an OO programmer to fiddle with data.&amp;nbsp; This effort has seen some small successes, but also some &lt;A class="" href="http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx" mce_href="http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx"&gt;large failures&lt;/A&gt;.&amp;nbsp; Also as more and more data moves into XML, mapping between relational stores and in-memory object representations seems to be missing half the point.&amp;nbsp; We need something different!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Microsoft is taking a different tack on the question of how best to improve developer productivity around data handling, given the two constraints above - that data is relational (but more and more XML)&amp;nbsp;and code is OO.&amp;nbsp; With LINQ, Microsoft is saying, we think the opportunity for improvement is in the ability to query data more simply.&amp;nbsp; It's not so much in the mapping - there are solutions here that get people "most of the way there".&amp;nbsp; The challenge now is, once you mapped your DBMS schema to your Object schema, once you have filled a collection of objects from your database, then what?&amp;nbsp; Can you filter that collection ("Give me all the customers that ordered over $10000 in the last month.&amp;nbsp; Ok, now give me the ones whose orders included this particular product.&amp;nbsp; Wait, now let me see the ones that ordered this other product.")&amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;Or think a little more generally and consider an object that aggregates data from multiple stores - maybe some of them relational and some not.&amp;nbsp; And you'd like to do "join" queries across all of that data.&amp;nbsp; Wouldn't it be nice if that were possible without requiring the developer to speak 3 different dialects of query language - T-SQL, XPath and something else?&lt;/P&gt;
&lt;P&gt;So that's what LINQ represents - Microsoft's&amp;nbsp;integration of&amp;nbsp;this query capability into the programming language itself.&amp;nbsp; It is worth checking out; it is&amp;nbsp;one of the things Microsoft believes will distinguish the next version of .NET from other alternatives, like Java.&amp;nbsp; A big innovation.&amp;nbsp; It seems that at least &lt;A class="" title="JavaLobby discussion on LINQ" href="http://www.javalobby.org/java/forums/t73037.html" mce_href="http://www.javalobby.org/java/forums/t73037.html"&gt;some people&lt;/A&gt; outside of Microsoft &lt;A class="" href="http://jonathanbruceconnects.com/jonathan_bruce/2006/05/a_java_perspective_on_linq.html" mce_href="http://jonathanbruceconnects.com/jonathan_bruce/2006/05/a_java_perspective_on_linq.html"&gt;tend to agree&lt;/A&gt;. And with the January CTP of Visual Studio "Orcas", now you can check it out. &lt;/P&gt;
&lt;P&gt;What about Interop, you say?&amp;nbsp;&amp;nbsp; Well that brings me to my point.&amp;nbsp; Currently the&amp;nbsp;design of LINQ&amp;nbsp;allows for extensions so that&amp;nbsp;one could integrate this in-language query capability with any backing store.&amp;nbsp; Microsoft will do the work to integrate SQL Server, as well as XML content with the capability.&amp;nbsp; &amp;nbsp;We're hoping that given enough interest, we'll see a clear justification for doing integration with other relational stores.&amp;nbsp;&amp;nbsp; If you have strong opinions on this, please let me know.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;-Dino&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1457537" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Interop/default.aspx">Interop</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/dotnetinterop/archive/tags/Java/default.aspx">Java</category></item></channel></rss>