|
Write a comment |
Articles |
DHTML Gallery |
.NET |
MyBlog |
About Me |
FAQ
|
|
|
Using Extension Methods with Typed Datasets
DataTable is one of the most widely used classes in .NET framework.
In data layers of a typical ADO.NET application one can see lot of code to work with DataTable and DataRow.
In this article I discuss how to do some common tasks involving datasets in more fashionable manner, in LINQ style.
This is not a tutorial on LINQ or extension methods or typed Datasets. I am assuming that most of you already know lot more about them than I do (if not, don't worry there are always late starters like me :-) ).
1. Filtering Rows The traditional way:
DataRow pr = p.Person.Select("Firstname ='a'");
With extension methods: var prst = p.Person.Where(n => n.FirstName=="a").ToArray<Persons.PersonRow>(); 2. Joining tables to get data Suppose we want to get all PersonInfo rows for persons whose first name contains 'a'. Now imagine writing C# code for that without use extension methods, and compare it with this:
var onlyinfo = p.Person.Where(n=>n.FirstName.Contains('a')).Join(p.PersonInfo,
n => n.PersonId,
m => m.PersonId,
(n, m) => m).ToArray<Persons.PersonInfoRow>();
3. Summing up a particular column To get sum of all Ids (kinda of vague but just for example :-)) int sumofids = p.Person.Sum(n => n.PersonId); 4. Getting a set of continus rows Get row no. 3, 4 and 5 var x= p.Person.Skip(2).Take(3); 5. Sorting by a particular field Sorting by last name var o = p.Person.OrderBy(n => n.LastName); Sort by "LastName,FirstName" var y = p.Person.OrderBy(n => n.LastName+","+n.FirstName).Reverse(); 6. Join using LINQ syntax Here we join two tables using LINQ syntax. What the query does is fetches custom resultset for all persons whose PersonId < 5
var tm = from l in p.Person
join q in p.PersonInfo
on l.PersonId equals q.PersonId
where l.PersonId < 5
select new { l.PersonId, q.PersonInfoId, l.FirstName, l.LastName };
var myarr = tm.ToArray();
Console.WriteLine("{0} {1} {2} {3}",
myarr[0].FirstName, myarr[0].LastName,
myarr[0].PersonId,myarr[0].PersonInfoId);
These were just some examples of what you can do with typed datasets .NET 3.5. In many cases, using extension methods will reduce the amount of code you write drastically. |
| Copyright (c) 2007-2011 Ashish Patil . Please read FAQ for more details. |