// Using Linq To DataSet to count rows based on a filter // compared to // Using the plain old Select() method that's been on DataTables since the beginning. // Learn more about Linq To DataSet here: http://msdn.microsoft.com/en-us/library/bb386977(VS.100).aspx using System; using System.Linq; using System.Data; using System.Data.Common; namespace ConsoleApplication { class Program { static void Main(string[] args) { // Build up some sample data in a DataTable... DataTable dt = new DataTable(); dt.Columns.Add("nMenuLevel", Type.GetType("System.Int32")); dt.Rows.Add(new object[] { 1 }); dt.Rows.Add(new object[] { 1 }); dt.Rows.Add(new object[] { 2 }); dt.Rows.Add(new object[] { 3 }); // Here's one way using Linq int linqCount1 = (from DataRow row in dt.Rows where (int)row["nMenuLevel"] == 1 select row).Count(); Console.Write("linqCount1 = " + linqCount1.ToString() + "\n\n"); // Here's another way using Linq int linqCount2 = dt.AsEnumerable().Where(c.Field("nMenuLevel") == 2).Count(); Console.Write("linqCount2 = " + linqCount2.ToString() + "\n\n"); // Here's a non-Linq way, using the old Select() method thats been available on DataTables // since the beginning. It's acutally much shorter and easier to read. // But watch out! Notice this Select syntaxt only requires 1 equal sign, not 2. int countWithSelect = dt.Select("nMenuLevel = 3").Count(); Console.Write("countWithSelect = " + countWithSelect.ToString() + "\n\n"); Console.ReadLine(); } } }
Hi Matt..just browsed to this web site.
Notice the Foxpro Logo and also Ruby on Rails
Am currenlty looking at Web development tools and interested in yuor experience if coming from a Foxpro background
Yes, I have a long FoxPro background and am still active in VFP daily. I have also written apps in Ruby on Rails, ASP.Net WebForms, and ASP.Net MVC. They are all fun to learn, and very capable.
However, it is a huge jump any time you move from desktop app development to developing web or browser based apps. Get ready to learn lots of new things!
I suggest you learn the following two (do not mess with WebForms):
1. Ruby on Rails Since Ruby is a dynamic language, it’s similar to FoxPro in many ways.
Check out this excellent whitepaper to teach VFP devs about Ruby on Rails: http://www.ita-software.com/papers/Borup_Ruby_published.pdf
Learn how to install Rails on your Windows machine here: http://railsinstaller.org/
Read this post about how I got started with Rails: http://mattslay.com/ruby-on-rails-forever/
2. ASP.Net MVC – After you learn Rails, you will see that ASP.Net MVC is VERY similar. However, the data access and C# strongly typed language is a good different than what you are used to in VFP. I do suggest C# over VB.Net. Also, the Entity Framework 4.1 has made a lot of improvements in the .Net data access area.
To learn about C# and the fundamentals of the .Net framework from a VFP perspective, I suggest this free e-book: http://foxcentral.net/microsoft/netforvfpdevelopers.htm
Learn more about ASP.Net MVC: http://www.asp.net/mvc
Thank you for the information, would you explain to me this part from the second example?
c =>
thanks in advance
That is a formatting mistake where I have accidentally pasted in some html code. I will fix it.
It should read:
int linqCount2 = dt.AsEnumerable().Where(c.Field("nMenuLevel") == 2).Count();