1. What is mean by LINQ?
LINQ stands for
Language Integrated Query. It is a uniform platform for any kind data. It
allows us to write a query against Object Collection, Database, XML or other
Data source in a standard form without having a separate Query Language.

2. How LINQ works?
Consider the sample
customer class with two public members Name and City.
public class Customer
{
public string Name;
public string City;
}
In a console
application, customer list with different Name and city are added. Using LINQ
retrieve all the customers located in "Coimbatore" city and displays
the name of the customer.
//Added a list of customers to the Customers collection list
List Customers = new List(){
new Customer(){Name="Sam",City="Coimbatore"}
,new Customer(){Name="Ram",City="Chennai"}
,new Customer(){Name="Sasi",City="Coimbatore"}};
//Using LINQ to retrive all the customers located in Coimbatore
city
var query = from c in Customers
where c.City
== "Coimbatore"
select c;
//Displaying all the customer located in Coimbatore city
foreach (Customer c in query)
{
Console.WriteLine(c.Name);
}
Console.ReadLine();
}
The compiler generates
the following query for the LINQ
IEnumerable query = Customers.Where(c => c.City ==
"Coimbatore");
In this compiler
generated code, "Where" is a extension method features introduced in
C# 3.0 to filter the data based on condition. LINQ make use of these features
to query data from object collection. Similar to the Where, we have Select,
OrderBy, etc extension methods supported for object collection.
This query will be
executed to retrieve data from the collection
3. How will you work with relative model using LINQ?
Using "Join"
keyword we can describe relation between two entities as like SQL join
statement. E.g In the below query we are joining the Customer collection with
Orders collection using CustomerID members. End result we are returning new
anonymous type with CustomerID, customer name, orderID as member.
var query = from c in Customers
join o in Orders
on
c.CustomerID equals o.Customer.CustomerID
select new { c.CustomerID, c.Name, o.OrderID };
4. In given line of LINQ, when actual query will be executed and
why?
In general, a LINQ
query is not really executed until there is access the query result, because it
describes set of operations that will be performed when necessary. In the below
example actual query is executed only in the foreach loop
//Added a list of customers to the Customers collection list
List Customers
= new List(){
new
Customer(){Name="Sam",City="Coimbatore"}
,new
Customer(){Name="Ram",City="Chennai"}
,new
Customer(){Name="Sasi",City="Coimbatore"}};
//Using LINQ
to retrive all the customers located in Coimbatore city
var query = from
c in Customers
where c.City == "Coimbatore"
select c;
//Displaying
all the customer located in Coimbatore city
foreach
(Customer c in query)
{
Console.WriteLine(c.Name);
}
5. What is mean by declarative programming?
Declarative
programming is a programming
paradigm that expresses the logic of a computation without describing its
control flow. There is main difference between filtering data using SQL query
and C# (2.0) language such as table for SQL or an array for C# or VB.net. SQL
describes what you want, where as in C# describe how to obtain the expected
result. In SQL the selection of the best algorithm to implement the
"How" is the responsibility of the query engine. It shows that SQL
query engine has more freedom to apply optimization than c#.
6. Is LINQ is Type safe or not?
Data used in the LINQ
area always strongly typed, including both the queried collections and the
singe entities that are read and returned.
7. What is the use of "Yield" type?
Yeild key word is used
to iterate through objects returned by a method. Method with IEnumerable return
type can be used with Yeild type.
Example:
public static IEnumerable Power(int num, int exponent)
{
int counter =
1;
int result =
1;
//Loop till
the power count reach exponent value
while
(counter < exponent)
{
result
= result * num;
counter++;
//Returns
power of num at each level e.g num, num^2, num^3....
yield
return result;
}
}
8. How will you map class with database table in LINQ? Or How
will you create Entity class in LINQ?
Class and Database
table can be mapped using Table and Column attribute. Table
Attribute has Name property to specify the name of the database table.
If Name property is not supplied then LINQ-> SQL will assume database table
has the same name as the class. Column attribute has few properties
which is used to customize the exact mapping between entity and database.
[Table(Name = "Customers")]
public class Customer
{
[Column(IsPrimaryKey = true)]
public string
CustomerID;
[Column]
public string
Name;
[Column]
public string
City;
}
9. Why "from" clause is stated before
"select" clause in LINQ which is not available in SQL?
In LINQ, all the query
starts with a "from" clause and ends with "Select" clause
because Microsoft want to provide IntelliSense capabilities within the
remaining part of the query which make writing rest part of the query easier.
10. What is difference between LINQ->SQL and LINQ->Entity?
·
Linq-to-SQL is for direct queries using SQL Server. It's a mapping
technology to map SQL Server database tables to .NET objects.
·
Linq-to-Entities is Linq used while using Microsoft's Entity Framework,
regardless of db server
11. What are different operators used in LINQ?
- Where Operators - Where
- Projection Operators - Select, SelectMany
- Ordering Operators - OrderBy , OrderByDescending, ThenBy, ThenByDescending, Reverse
- Grouping Operators - Group By
- Join Operators - Join, GroupJoin
- Set Operators - Distinct, Union, Intersect, Except
- Aggregate Operators - count, LongCount, Sum,Min,Max, Avagrage, aggregate
- Generation Operators - Range, Repeat, Empty
- Qualifiers Operators -Any, All, Contains,
- Partitioning Operators -Take, TakeWhile, Skip, SkipWhile
- Element Operators - First, FirstOrDefault,Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultEmpty
- Other Operators - Concat, SequenceEqual
12. What are two main concepts in LINQ?
Two main concepts
which is used to understand the LINQ are Deferred query evaluation and
Extension method
·
Deferred Query
Evaluation - LINQ queries are not evaluated when it is defined but when it is
used. It is useful by defining once and used many times when it is required.
Result of the query expression will always be based on latest updated content.
·
Extension Method -
This allows developer to add functionality in existing class without modifying
the existing class or recompiling the existing class or extending the existing
class. LINQ make use of this extension method for manipulating data e.g Where,
Select...etc
13. What is mean by DLINQ?
DLINQ stands for Data
Language Integrated Query, it is also referred to as LINQ to SQL. It is
specifically the version of LINQ that focuses on querying data from relational
data sources. In Dlinq, DataContext is the main object through which we will be
retrieve objects from the database and submit changes back to DB.
14. How SQL query generated from Linq query?
In LINQ, DataContext
class is used to communicate between LINQ and SQL. It accept and IConnection
class to establish connection with SQL. It uses metadata information to map the
Entity with physical structure of database.
[Table(Name = "Customers")]
public class Customer
{
[Column(IsPrimaryKey = true)]
public string
CustomerID;
[Column]
public string
Name;
[Column]
public string
City;
}
15. How will you read data from SQL using Dlinq?
Using DLINQ user can
easily read the data from SQL. Visual studio provides inbuilt template to
create link between LINQ and SQL.
Example:
·
Create a sample
console application and add new item to the project
·
In the shown template
select "LINQ to SQL Classes". A new dbml file will be added to your
project. 

·
Connect to the SQL
server using Server Explorer and drag and drop any folder that we need to read
the data. 

·
This ".dbml"
file create a "Employee" Entity mapping to database table. Database
column will be mapped to property of the Employee class.

·
Once Table are mapped
to Entity, automatically connection string will be added to your application as
shown below.
<connectionStrings>
<add name="AdventureWorksConnectionString"
connectionString="Data Source=SARAVANAK-6930\SQLEXPRESS;
o Initial Catalog=AdventureWorks;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
·
As we discuss
DataContext instance is root, through which we can access the corresponding
table in database. In the below example I try to read the Employee table with
employeeId 1 to 10.
·
//Creating connection
string for DataContext object
·
SqlConnection conn =
new SqlConnection();
·
string connString =
System.Configuration.ConfigurationManager
·
.ConnectionStrings["AdventureWorksConnectionString"].ToString();
·
conn.ConnectionString
= connString;
·
//Get the object of
the Datacontext
·
AdventureWorksDBDataContext
adWorksDC = new AdventureWorksDBDataContext(conn);
·
·
//Query from table
·
//Read the employee
with ID between 1 and 10
·
var employees = from emp in
adWorksDC.Employees
·
where emp.EmployeeID >=1
&& emp.EmployeeID<10
·
select emp;
·
·
foreach (Employee e in employees )
·
{
·
Console.WriteLine(String.Format("LoginName:
{0}", e.LoginID) );
·
}
·
Output:

16. How will you Insert record to DB table using LINQ?
A new data record can
be inserted to Database table using InsertOnSubmit() method available in
DataContext instance. Developer should call the SubmitChanges() method to
commit the database transaction else data will not be insert in database table.
Example:
Below sample code
shows to insert new Product Category record to database using LINQ.
//Inserting the
Product category into table
ProductCategory
cate = new ProductCategory();
cate.ProductCategoryID = 5;
cate.Name =
"New Category";
cate.rowguid =
System.Guid.NewGuid();
cate.ModifiedDate
= DateTime.Now;
adWorksDC.ProductCategories.InsertOnSubmit (cate);
adWorksDC.SubmitChanges();
17. How to update data using linq?
Database update can be
done using "SubmitChanges()" method in DataContext instance.
18. How will you call Store procedure using LINQ?
We can call the store
procedure define in DB using "Function" and "Parameter"
attribute. Consider the below example where user need to call the store
procedure "uspGetEmployeeManagers" using LINQ->SQL, for
which method "GetEmployeeManagers" will be decorated with
Function attribute which requires "Name" property to mention to which
SP need to call. If SP requires parameter value, these values can be passed
using "Parameter" attribute. SP can return single or multiple result
set. For Single result set we will be mapping with ISingleResult return
type for multiple result set method it will return IMultipleResults
return type of collection. Objects return by the SP will be mapped to new class
with columns are mapped to property of the class.
SP mapped to Method
[System.Data.Linq.Mapping.Function(Name="dbo.uspGetEmployeeManagers")]
public ISingleResult
GetEmployeeManagers([System.Data.Linq.Mapping.
Parameter(Name="EmployeeID", DbType="Int")]
System.Nullable employeeID)
{
IExecuteResult
result = this.ExecuteMethodCall(this,
((MethodInfo)(MethodInfo.GetCurrentMethod())), employeeID);
return
((ISingleResult)(result.ReturnValue));
}
Calling SP using
method
////Creating connection string for DataContext object
SqlConnection conn = new SqlConnection();
string connString = System.Configuration.ConfigurationManager
.ConnectionStrings["AdventureWorksConnectionString"].ToString();
conn.ConnectionString = connString;
//Get the object of the Datacontext
AdventureWorksDBDataContext adWorksDC = new
AdventureWorksDBDataContext(conn);
//Calling SP using method and iterating through values
foreach (uspGetEmployeeManagersResult e in
adWorksDC.GetEmployeeManagers(1))
{
Console.WriteLine(String.Format("EmpID: {0} Name: {1}", e.EmployeeID,
e.FirstName));
}
Console.ReadLine();
19. How will you call User Define Function using LINQ?
Similar to calling
store procedure, functions also called using "Function" and
"Parameter" attribute.
Please refer "How
will you call Store procedure using LINQ?" for more information
Example:Function mapped
to a method
[System.Data.Linq.Mapping.Function(Name="dbo.ufnGetContactInformation",
IsComposable=true)]
public IQueryable GetContactInformation
([global::System.Data.Linq.Mapping.Parameter(Name="ContactID",
DbType="Int")] System
.Nullable
contactID)
{
return
this.CreateMethodCallQuery(
this,
((MethodInfo)(MethodInfo.GetCurrentMethod())), contactID);
}
Calling function using
LINQ
//Creating connection string for DataContext object
SqlConnection conn = new SqlConnection();
string connString = System.Configuration.ConfigurationManager
.ConnectionStrings["AdventureWorksConnectionString"].ToString();
conn.ConnectionString = connString;
//Get the object of the Datacontext
AdventureWorksDBDataContext adWorksDC = new
AdventureWorksDBDataContext(conn);
//Calling Function by passing parameter as '1'
foreach (ufnGetContactInformationResult c in adWorksDC.GetContactInformation (1))
{
Console.WriteLine(String.Format("ContactID: {0} Name: {1}", c.ContactID ,
c.FirstName));
}
20. How to provide Ready only access to DB?
Suppose if we need to
access data only in a read-only way and if we need to improve performance by
disabling DataContext class to modify by using ObjectTrackingEnabled
property of the Datacontext class
AdventureWorksDBDataContext adWorksDC = new
AdventureWorksDBDataContext(conn);
adWorksDC.ObjectTrackingEnabled = false;
21. How will you enable transaction in LINQ->SQL?
A SubmitChanges() in
DataContext call automatically starts a database explicit transaction. Using
the TransactionScope class contained in the System.Transaction library
will be transparently promoted to a distributed transaction.
Example:
using
(TransactionScope ts = new TransactionScope())
{
//Inserting the Product category into table
ProductCategory cate = new ProductCategory();
cate.ProductCategoryID = 5;
cate.Name
= "New Category";
cate.rowguid = System.Guid.NewGuid();
cate.ModifiedDate = DateTime.Now;
adWorksDC.ProductCategories.InsertOnSubmit(cate);
adWorksDC.SubmitChanges();
ts.Complete();
}
22. How to create and delete DB from LINQ?
We can create database
using DataContext class, if we have a class derived from DataContext that
contains entity definition decorated with Table and Column attributes, we can
create the corresponding batabase by calling the "CreateDatabase"
method.
Example:
MyDatabaseContext myDBContext = new MyDatabaseContext("Data
Source=SARAVANAK-6930;
Initial Catalog=MyNewDatabase;Integrated Security=True");
myDBContext.CreateDatabase();
23. What is the LINQ file extension that interacts with Code
Behind's objects?
*.dbml
24. What are the error reporting options during concurrency
conflicts?
There are two ways to
report conflicts while summiting changes to database using linq.
ContinueOnConflict :-
Specifies that all the update to the database to be tried and finally return
all conflicts at the end of the process.
FailOnFirstConflict :-
Specifies that attempts to update database should stop immediately when first
concurrency conflicts are detected and return all the conflicts at that moment.
In other words LINQ engine does not continue ahead executing the code.
Example:
adWorksDC.SubmitChanges(ConflictMode.FailOnFirstConflict);
25. What are advantages of LINQ over Store procedure?
·
Debugging SP is very
difficult, where as LINQ is simple by using visual studio
·
Compile time safety
when your schema changes
·
Deployment is easier
in linq everything is compiled to dll, where as in DB we need to manage
deployment script.
26. What are disadvantage of LINQ over Store procedure?
·
Store procedure can
take full advantage of SQL features where as there will be some features
missing in LINQ
·
Store process need
only serialize SP name and argument data over the wire while LINQ sends the
entire query.
·
Redeployment, if we
need any modification, we need to recompile assembly in LINQ, where as in SP it
is not the case.
27. What is XLINQ?
XLINQ = LINQ->XML,
it is XML programming API to query XML data using LINQ. XLINQ provides power of
both DOM and XQuery/XPath through LINQ extension methods to manage and query
in-memory XML nodes.
28. How will you create xml document object using XLINQ?
XML Document can be
created using XDocument, XDeclaration , XElement, XAttribute instance
Example:
XDocument xDocEmployee = new XDocument(
new
XDeclaration("1.0", "utf-8", "yes"),
new
XElement("Employee",
new
XAttribute("ID", "2012"),
new
XElement("FirstName", "Ram"),
new
XElement("LastName", "Kumar"),
new
XElement("Salary", 10000)));
XML document
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Employee ID="2012">
<FirstName>Ram</FirstName>
<LastName>Kumar</LastName>
<Salary>10000</Salary>
</Employee>
29. How will you read xml content using LINQ?
Consider the xml
document with list of employee. Below example gives filtering and reading the
employee details based on designation.
XML Document
<?xml version="1.0" encoding="utf-8" ?>
<Employees>
 <Employee ID="101">
   <FirstName>Ram</FirstName>
   <LastName>Kumar</LastName>
   <Designation>SE</Designation>
 </Employee>
 <Employee ID="102">
   <FirstName>Sasi</FirstName>
   <LastName>Kumar</LastName>
   <Designation>SSE</Designation>
 </Employee>
 <Employee ID="103">
   <FirstName>Praveen</FirstName>
   <LastName>prakash</LastName>
   <Designation>SSE</Designation>
 </Employee>
</Employees>
LINQ Query
var employees =
from e in
xDocEmployee.Elements("Employee")
where e.Element("Designation").Value
== "SSE"
select new { Name =
e.Element("FirstName").Value, ID = e.Attribute("ID").Value
};
30. 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.
var employees = from emp in adWorksDC.Employees
where
emp.EmployeeID >=1 && emp.EmployeeID<10
orderby
emp.EmployeeID
select
emp;
31. What is the purpose of LINQ Providers in LINQ?
LINQ Providers are a
set of classes that takes a LINQ query and dynamically generates a method that
executes an equivalent query against a specific data source.
No comments:
Post a Comment