Reputation: 7289
I am filling a dataset by running a stored procedure, and i am filling a datatable from the dataset.
DataSet RawDataSet = DataAccessHelper.RunProcedure("storedprocedureName");
//this will just return the dataset by running the procedure
DataTable RankTable = RawDataSet.Tables[0];
The Datatable has the below values:
Vicky Login 6/24/2014
Vicky Login 6/25/2014
Arun Game 6/26/2014
Arun Login 6/27/2014
Kumar Login 6/28/2014
Kumar Game 6/29/2014
Arun Login 6/30/2014
Arun Login 7/1/2014
Kumar Game 7/2/2014
Vicky Login 7/3/2014
Arun Login 7/4/2014
Arun Game 7/5/2014
I want to parse this dataTable and get how many times everyone has done an action, i.e how many times each row is repeated:
Vicky Login 3
Arun Game 2
Arun Login 4
Kumar Login 1
Kumar Game 2
I am new to C#. This can be done using count(*) in SQL but I need to do this using C#. Please let me know if there are any ways to achieve this.
I have searched SO but all posts are related to removing the duplicates/finding the duplicates, which does not solve my purpose.
Upvotes: 3
Views: 4355
Reputation: 223277
You can achieve that using LINQ like:
var query = RankTable.AsEnumerable()
.GroupBy(r => new { Name = r.Field<string>("Name"), Action = r.Field<string>("Action") })
.Select(grp => new
{
Name = grp.Key.Name,
Action = grp.Key.Action,
Count = grp.Count()
});
Here Name
is assumed to be the column name for first column, and Action
is assumed to be name of second column which has values like login, game etc.
You may see LINQ to DataSet - MSDN
For output use:
foreach (var item in query)
{
Console.WriteLine("Name: {0}, Action: {1}, Count: {2}",item.Name, item.Action,item.Count);
}
Upvotes: 6