Use LINQ to access CRM objects

If you have written small console application to check some data from CRM database you have probably already read this article from MSDN: Use Filtered Views. That is okay but honestly I’m currently more into LINQ solution. I’ll show you what I mean...

First I'll create new Console Application project and Add New Item to it and select LINQ to SQL Classes and name it CRMDataClasses.dbml:
LINQDataClasses

Then I'll use Server Explorer to connect to CRM database:
ServerExplorer

And then I'll drag Account, Contact, FilteredAccount and FilteredContact to the canvas of our newly created CRMDataClasses.dbml: CRMDataClasses

Now I'm ready to use LINQ to these views:

 12345678910111213141516171819202122
 CRMDataClassesDataContext dataContext = new CRMDataClassesDataContext();var queryContact = from contact in dataContext.Contacts          where contact.MobilePhone.Length > 0 &&          contact.LastName.Length > 0    select contact;Console.WriteLine("Contact(s):");foreach (Contact c in queryContact){  Console.WriteLine(c.FirstName + " " + c.LastName + ", " + c.MobilePhone);}var queryFilteredContact = from contact in dataContext.FilteredContacts          select contact;Console.WriteLine("");Console.WriteLine("Filtered contact(s):");foreach (FilteredContact c in queryFilteredContact){  Console.WriteLine(c.lastname);}

On lines 3 to 6 I queried all contacts that have lastname and mobilephone filled in. On lines 14 to 15 I'm querying all contacts where current user has access to. NOTE: It doesn't return anything if you use SQL Authentication! So both of these can be used to fill you applications needs. But do notice that for some reason the attributes at the FilteredContacts are all lower case and in Contacts their naming is a bit different. So if you plan to change from Contacts to FilteredContact your going to have to change the casing of the attributes little bit.

This was just quick advice how you can leverage LINQ to your CRM solutions.

Anyways... Happy hacking!

J