Microsoft released ‘sneak peak’ videos last week on the developer enhancements in SharePoint 2010. One of new features discussed is LINQ for SharePoint.
From the video, LINQ for SharePoint looks very similar to LINQ to SQL (which reached a dead end last year). Below is a diagrammatic representation of the new LINQ for SharePoint based on the sneak peak video released.
As you can see, it is similar to SqlMetal command line tool which is used to generate the code and mapping for LINQ to SQL.
The SPMetal.exe will generate the necessary code and mapping for LINQ to SharePoint which you can then use it in your code.
For now (MOSS 2007), you can still make use of the LINQ framework in SharePoint for Collections, like for this ItemCollections which is using the Enumerable.Cast<TResult> method.
SPListItemCollection listPages = pagesList.Items; var latestPages = listPages.Cast<SPListItem>().Where(p => p.Name != defaultPageName);
You may now ask – What is the difference then? We can all use this Cast method, right? – Well, even though you are using the LINQ framework, your SharePoint data is not strongly typed and you still have to deal with the normal SharePoint objects like SPList or SPFile etc., But with the new LINQ for SharePoint, you will have strongly typed access to data in SharePoint Lists or Document Libraries and also make use of the rich LINQ framework.
The code example (available in the video) directly queries the SharePoint List Employees which is a strongly typed data of a SharePoint List named Employees and emp.Project could refer to a metadata field.