• USA : +1 973 910 5725
  • INDIA: +91 905 291 3388
  • info@tekslate.com
  • Login

LINQ to SharePoint

In SharePoint 2010 you now have the ability to use LINQ syntax to fetch items from your lists instead of using the “traditional” approach of CAML queries. (Including SPSiteDataQuery and SPQuery objects)

LINQ or Language Integrated Query is a very useful language which reduces the complexity of accessing and integrating information that is not natively defined using OO technologies, with LINQ it adds native data querying capabilities to .NET languages which makes a developer’s life really easy. Since it was launched, I started using it as it saves me a lot of time in coding my applications.

LINQ adds a SQL-like syntax and vocabulary to each of the languages, which can be used to query data sources. But unlike other languages and query syntaxes which vary from one type of data source to another, LINQ can be used to query, in principle, any data source whatsoever. For this reason, developers may find that it is the only query syntax that they ever need to know.

All that is necessary to make a data source accessible with LINQ is that someone create a LINQ provider for the data source. A LINQ provider is an implementation of the System.Linq.IQueryable<T> and System.Linq.IQueryProviderinterfaces that are included with Microsoft .NET Framework (System.Core.dll). The implementing classes must be public in a managed code assembly. The primary job of the class that implements IQueryProvider is to translate LINQ queries into the language of the data source, such as SQL or XQuery, then call the data source’s application to execute the query.
The provider must also expose a gateway class whose instances can communicate with the data source and outputIEnumerable<T> objects. For example, the gateway class for LINQ to SQL is DataContext and the gateway class forLINQ to XML is XDocument. The gateway class must implement System.Linq.IQueryable<T> or have a child property that does so or have a method that returns a type that implements System.Linq.IQueryable<T>. For example,DataContext has a GetTable() method that returns a Table<TEntity> type that implements System.Linq.IQueryable<T>. The latter interface, in turn, has a property of type IQueryProvider. (The gateway class can also directly implementIQueryProvider.) It is objects of type Table<TEntity> that are queried.

In many cases, a LINQ Provider cannot be used by a .NET solution developer unless the developer creates a set of entity classes to represent the subordinate entities in the data source, such as the particular tables of a particular SQL database. Frequently, a lot of such classes must be created (e.g., a database with three dozen tables), so the developer of a LINQ provider will typically include a code generation tool to automate the process of creating these entity classes.

In this article you are able to learn how you can get started using LINQ queries in SharePoint, also known as LINQ to SharePoint.
In order to work with LINQ in SharePoint 2010, we need use a tool called SPMetal.exe which resides in the14bin folder. This tool is used to generate some entity classes which Visual Studio 2010 can use to get IntelliSense, and allows for LINQ-based queries to be performed on your lists.

Noteworthy:

how to write CAML queries. LINQ queries can be used in server code. To query from a client application, useSharePoint’s support for ADO.NET Data Services.
The gateway class for the LINQ to SharePoint provider is Microsoft.SharePoint.Linq.DataContext which represents the data of a SharePoint Foundation Web site. It is parallel in use and function to the System.Data.Linq.DataContext class in the LINQ to SQL provider. Just as the latter class has a GetTable() method that returns a Table<TEntity> object that implements System.Linq.IQueryable<T>, so too, the Microsoft.SharePoint.Linq.DataContext class has a GetList<T>method that returns an EntityList<TEntity> class that implements System.Linq.IQueryable<T>. It is objects of typeEntityList<TEntity> that are queried.

Visual Studio 2010 – Let’s create a sample Web Part that utilizes LINQ to SharePoint

In this sample I will create a simple Web Part that will use LINQ to SharePoint syntax to fetch some information from the Announcements list. A basic sample I use in my training classes as well, and should be fairly easy to grasp!

 

  1. Create a new project (I’m going to create a new Visual Web Part project)
  2. Import your Data Context-file by choosing yourProject -> Add -> Existing Item:
  3. Specify your file (mine is called MyEntities.cs):
  4. Make sure it’s properly placed in your project structure – then we’re good to go:

42

 

Alright – that’s easy enough. Thus far we have created an entity file using SPMetal.exe and now we have successfully imported it into our project.
Add proper references

Now in order to use LINQ to SharePoint, you also need to reference the Microsoft.SharePoint.Linqassembly. Point to references, right-click and choose “Add Reference” and select the Microsoft. SharePoint.Linq.dll file:
In your code, reference the assemblies:

43

Interested in mastering SharePoint Training? Enroll now for FREE demo on SharePoint Training Online.

What you should’ve done up until now is this:

  1. Generate your entities using the SPMetal.exe tool
  2. Reference the newly created file from your SharePoint project
  3. Make sure you’re using the proper references for System.Linq and Microsoft.SharePoint.Linq

In this example we will have a Visual Web Part that will use LINQ to SharePoint to fetch all Announcements from my Announcement-list and work with those results.

44

IntelliSense!

While you code your queries using LINQ to SharePoint, you will now have access to IntelliSense, which you did not have with CAML queries:

45

Very  easy to get started with LINQ to SharePoint, and all you really need to know is to start using the SPMetal tool to generate your entity classes and hooked up with Visual Studio to start coding.

You can try the following operations: Read, Insert, Update, and Delete using LINQ to SharePoint.

Selecting an Item

Now we are trying to select the managers with country as USA:

using (SiteEntitiesDataContext context = new SiteEntitiesDataContext(“http://appes-pc”))
{
var result = context.Manager.Where(m => m.Country == “USA”);

foreach (ManagerItem manager in result)
{
Console.WriteLine(manager.Name);
}
}

Note: You can use LINQ or Lambda Expression to do the query. In the above example I have used Lambda.

On executing the application you can see the following results.

Inserting an Item

For inserting a new item into the Manager list, use the following code:

using (SiteEntitiesDataContext context = new SiteEntitiesDataContext(“http://appes-pc”))
{
ManagerItem manager = new ManagerItem();
manager.Name = “New Manager”;
manager.Address = “New Address”;
manager.Country = “New Country”;

context.Manager.InsertOnSubmit(manager);
context.SubmitChanges();
}

After executing the application, open the Manager list inside SharePoint as shown below:

46

For Indepth understanding of SharePoint click on


Summary
Review Date
Reviewed Item
LINQ to SharePoint
Author Rating
5

“At TekSlate, we are trying to create high quality tutorials and articles, if you think any information is incorrect or want to add anything to the article, please feel free to get in touch with us at info@tekslate.com, we will update the article in 24 hours.”

0 Responses on LINQ to SharePoint"

Leave a Message

Your email address will not be published. Required fields are marked *

Site Disclaimer, Copyright © 2016 - All Rights Reserved.