Click here to Skip to main content
Click here to Skip to main content

LINQ FAQ for Newbie’s

, 17 Jul 2009
Rate this:
Please Sign up or sign in to vote.
LINQ FAQ for Newbie’s
This is an old version of the currently published article.

Updated LINQ FAQ Part II

LINQ FAQ for Newbie’s

 

Introduction and Goal
Other LINQ FAQ's
Define LINQ?
How does LINQ help us from the perspective of business objects?
Can you explain how a basic LINQ Query looks like?
How do we write a LINQ query to search with criteria?
How can do a join using LINQ query?
How can we do a group by using LINQ query?
How can we do an order by using LINQ query?

Source Code

 

Introduction and Goal
 

In this section we will run through basics of LINQ and then see 5 basic LINQ queries which you will always need in your project for queries. While looking at the basics we will also try to learn what problem LINQ solves from the perspective of middle tier business objects.

You can download my 1000 Questions and answers .NET book from the below link, I am dead sure you will enjoy it.

http://www.questpond.com/SampleDotNetInterviewQuestionBook.zip 
 

Other LINQ FAQ's

 

LINQ FAQ Part II:-In this FAQ we will see a basic example of LINQ to SQL, how to define 1-1 and 1-many relationship using LINQ, how we can optimize LINQ queries, execution of stored procedures using LINQ and finally we will see a simple CRUD example using LINQ to SQL :-  LINQ FAQ Part II
 

Define LINQ?
 

LINQ is a uniform programming model for any kind of data access. LINQ enables you to query and manipulate data independently of data sources. Below figure 'LINQ' shows how .NET language stands over LINQ programming model and works in a uniformed manner over any kind of data source. It’s like a query language which can query any data source and any transform. LINQ also provides full type safety and compile time checking.
LINQ can serve as a good entity for middle tier. So it will sit in between the UI and data access layer.
 

Figure - LINQ

 

Below is a simple sample of LINQ. We have a collection of data ‘objcountries’ to which LINQ will is making a query with country name ‘India’. The collection ‘objcountries’ can be any data source dataset, datareader, XML etc. Below figure ‘LINQ code snippet’ shows how the ‘ObjCountries’ can be any can of data. We then query for the ‘CountryCode’ and loop through the same.

Figure: - LINQ code snippet


How does LINQ help us from the perspective of business objects?
 

One of the tedious jobs in business object is parsing and searching object collections. For instance consider the below figure where we want to search a country by an ‘ID’ value. So what we do is loop through the collection and get the object. Many may argue how about keeping a key in List or Array. The below example is just a sample. For instance if you want to search using country code and name, list / collection keys will not work with those multi-value searches.
 

In other words using LINQ we can query business object collections and filter the collection in a single LINQ query.
 

Can you explain how a basic LINQ Query looks like?
 

In order to understand the basic query for LINQ, let’s make a small sample project. Let’s take customer data which has customer and orders.
 

Customer Name Customer Code City Orders
Khadak 001 Mumbai
  • Shirts
  • Socks
Shiv 002 Delhi
  • Pants
Raju 003 Mumbai
  • Socks
Shaam 004 Delhi
  • Shoes

We have made the data a bit complex by have one customer and multiple orders , in other words we have one as to many relationship.

So let’s make two classes one is the customer class aggregated with a collection of addresses class. Below is how the class structure will look like to accommodate the one as to many relationships of customer and multiple addresses.

The multiple addresses are the array collection aggregated inside the customer class. So below is the code snippet which is loading the customer and address collections with hard coded data provided in the above table. Currently its hardcoded but this can be loaded from database or some other source also.

clsCustomer[] objCustomer = new clsCustomer[]
{
new clsCustomer{CustomerName="Khadak",customerCode="001",City="Mumbai",Orders = new clsOrder[]
{new clsOrder{ProductName="Shirt"},
new clsOrder{ProductName="Socks"}}},
new clsCustomer{CustomerName="Shiv",customerCode="002",City="Delhi",Orders = new clsOrder[]{new clsOrder{ProductName="Pants"}}},
new clsCustomer{CustomerName="Raju",customerCode="003",City="Mumbai",Orders = new clsOrder[]{new clsOrder{ProductName="Socks"}}},
new clsCustomer{CustomerName="Shaam",customerCode="004",City="Delhi",Orders = new clsOrder[]{new clsOrder{ProductName="Shoes"}}}};

A basic LINQ query looks like something as shown below. Its start with the verb from followed by the data type and object i.e. ‘clsCustomer’ and ‘obj’ object. ‘objCustomer’ is the collection which has customer and addresses which we have loaded in the top section. ‘select obj’ specifies that we need all the values.
 

from clsCustomer obj in objCustomer select obj

Below figure shows in the right hand side the query in LINQ. In the left hand side we loop through the object collection.
 

  

We have made a simple project which demonstrates the basic LINQ query; you can download the same see how it works actually. Below figure shows the execution of the simple query.

How do we write a LINQ query to search with criteria?
 

We need to put the where clause before the ‘select’ keyword.
 

return from clsCustomer Obj in objCustomer where Obj.customerCode == “001” select Obj;

Below figure shows the where clause in action.
 

How can do a join using LINQ query?
 

Below is the LINQ code snippet for creating joins between object collections. In this case we are creating a join on customer and orders. If you remember the order collection was contained in the customer class.
 

return from clsCustomer ObjCust in objCustomer 
from clsOrder ObjOrder in ObjCust.Orders
select ObjCust;

Below is the result of how LINQ join query looks like.
 

How can we do a group by using LINQ query?
 

Below is the code snippet which shows how group by query is written using LINQ. You can see we have created first a temp variable i.e. ‘GroupTemp’ and then we have used the ‘Select’ clause to return the same.
 

var GroupCustomers = from ObjCust in objCustomer
group ObjCust by ObjCust.City into GroupTemp
select new {GroupTemp.Key,GroupTemp};

Below image shows group by in action.
 

How can we do an order by using LINQ query?
 

Order by in LINQ is pretty simple. We just need to insert order by before the ‘Select’ query.
 

return from clsCustomer ObjCust in objCustomer
orderby ObjCust.City
select ObjCust;

Below figure shows how we have ordered on the city name.
 

 

Source Code

You can get the code snippet of the above LINQ queries from here

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Shivprasad koirala
Architect http://www.questpond.com
India India

I am a Microsoft MVP for ASP/ASP.NET and currently a CEO of a small
E-learning company in India. We are very much active in making training videos ,
writing books and corporate trainings. Do visit my site for 
.NET, C# , design pattern , WCF , Silverlight
, LINQ , ASP.NET , ADO.NET , Sharepoint , UML , SQL Server  training 
and Interview questions and answers


Comments and Discussions


Discussions posted for the Published version of this article. Posting a message here will take you to the publicly available article in order to continue your conversation in public.
 
SuggestionMy vote of 5 PinmemberThe14thNoah15-May-14 23:03 
QuestionMy Vote of 4 PinprofessionalRahul VB5-May-14 21:45 
GeneralMy vote of 4 PinmemberArmando de la Torre26-Jun-12 8:49 
GeneralMy vote of 5 Pinmembermanoj kumar choubey8-Jun-12 10:01 
Suggestionwhat about complicated quires Pinmembereiad-dar17-May-12 21:35 
GeneralMy vote of 5 Pinmembermanoj kumar choubey16-May-12 18:25 
QuestionMy vote of 5 Pinmemberramesh_nrk6-Apr-12 2:38 
GeneralMy vote of 5 Pinmemberramesh_nrk6-Apr-12 2:37 
GeneralMy vote of 4 PinmemberItz.Irshad13-Feb-12 17:44 
GeneralMy vote of 5 Pinmemberrajyarr16-Dec-11 15:24 
GeneralMy vote of 5 PinmemberSChristmas17-Jun-11 1:09 
GeneralMy vote of 2 PinmemberBSRK17-May-11 19:49 
GeneralRe: My vote of 2 PinmemberRyanEK24-Aug-11 12:33 
GeneralMy vote of 4 PinmemberAmir Mehrabi-Jorshary20-Oct-10 1:43 
GeneralMy vote of 5 Pinmemberirfan patel14-Jul-10 11:04 
General5 STARS Pinmemberirfan patel14-Jul-10 10:07 
GeneralApostrophes (check title) Pinmembertec-goblin11-Mar-09 4:03 
GeneralLINQ to Word/Excel PinmemberQistoph4-Mar-09 23:38 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140821.2 | Last Updated 18 Jul 2009
Article Copyright 2009 by Shivprasad koirala
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid