Language Integrated Query is one of the feature that ship with .Net Framework 3.5. LINQ is a set of language extension that allows developers to write queries using full power programming that they are using, programming language might be C#, VB or any of the .Net supported language. In a simplest form LINQ defines keywords that a developer can use to build queries. LINQ expressions allows developers to select, sort,filter, group and transform data.
Same LINQ expression can be used with different type of data sources. For example, LINQ to Objects, the simplest form of LINQ, allows you to query collections of in-memory objects. LINQ to DataSet performs the same feat with the in-memory DataSet. Even more interesting are the two LINQ flavors that let you access external data: LINQ to SQL, which allows you to query a SQL Server database without writing data access code, and LINQ to XML, which allows you to read an XML file without using .NET’s specialized XML classes.
Let’s start with how LINQ work with in memory collections. This is called LINQ to objects or simple LINQ. LINQ to objects allows developers to eliminate logic of for each loop.
For example, imagine you want to get a list of all website that have a word .net
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
' Get the full collection of website from a helper method.
Dim websitelist As List(Of Website) = Website.getWebsite
'find a mathching website
Dim matches As List(Of Website) = New List(Of Website)
For Each websitename As Website In websitelist
If websitename.websitename.Contains(".net") Then
matches.Add(websitename)
End If
Next
End Sub
Now perform the same task using LINQ
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
Dim websites As New List(Of Website)
Dim matches As IEnumerable(Of Website)
matches = From websitename In websites Where websitename.websitename.Contains(".net") Select websitename
End Sub
Website Class Code
Public Class Website
Public websitename As String
Public websiteurl As String
Public Sub New(ByVal websitename As String, ByVal websiteurl As String)
Me.websitename = websitename
Me.websiteurl = websiteurl
End Sub
Public Shared Function getWebsite() As List(Of Website)
Dim weblist As New List(Of Website)
Dim web1 As New Website("Microsoft", "http://microsoft.com")
weblist.Add(web1)
Dim web2 As New Website("MSDN", "http://msdn.microsoft.com")
weblist.Add(web2)
Dim web3 As New Website("All About ASP.Net", "http://allaboutasp.net")
weblist.Add(web3)
Dim web4 As New Website("ReadersZone", "http://readerszone.com")
weblist.Add(web4)
Dim web5 As New Website("ASP.net", "http://asp.net")
weblist.Add(web5)
Dim web6 As New Website("Silverlight", "http://silverlight.net")
weblist.Add(web6)
Return (weblist)
End Function
End Class
Public Class Website
Public websitename As String
Public websiteurl As String
Public Sub New(ByVal websitename As String, ByVal websiteurl As String)
Me.websitename = websitename
Me.websiteurl = websiteurl
End Sub
Public Shared Function getWebsite() As List(Of Website)
Dim weblist As New List(Of Website)
Dim web1 As New Website("Microsoft", "http://microsoft.com")
weblist.Add(web1)
Dim web2 As New Website("MSDN", "http://msdn.microsoft.com")
weblist.Add(web2)
Dim web3 As New Website("All About ASP.Net", "http://allaboutasp.net")
weblist.Add(web3)
Dim web4 As New Website("ReadersZone", "http://readerszone.com")
weblist.Add(web4)
Dim web5 As New Website("ASP.net", "http://asp.net")
weblist.Add(web5)
Dim web6 As New Website("Silverlight", "http://silverlight.net")
weblist.Add(web6)
Return (weblist)
End Function
End Class