|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
using System.Data.Sql;
using System.Data;
namespace Linq_Grouping
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter your choice. \n1-> Linq With XML\n2->Linq With DataTable\n3-> Linq With Entities");
int choice = int.Parse(Console.ReadLine());
if (choice == 1)
ExecuteLinqWithXML();
else if (choice == 2)
ExecuteLinqWithDataTable();
else if (choice == 3)
ExecuteLinqWithEntities();
Console.ReadLine();
}
static void ExecuteLinqWithXML()
{
Random rnd = new Random();
XElement Customers = new XElement("Customers");
for (int i = 0; i < 25; i++)
{
Customers.Add(
new XElement("Customer",
new XElement("Id", ("cust_id" + (i + 1))),
new XElement("Name", "Customer" + (i + 1)),
new XElement("Category", "Cat" + ((i + 1)) % 6),
new XElement("Sales", (rnd.Next(100, 1000)))
)
);
}
var results = from p in Customers.Descendants("Customer")
group p by p.Element("Category").Value into grps
select new
{
Key = grps.Key,
Values = grps,
TotalSales = grps.Sum(g => decimal.Parse(g.Element("Sales").Value)),
Total = grps.Count(),
AvgSales = grps.Average(g => decimal.Parse(g.Element("Sales").Value)),
MaxSales = grps.Max(g => decimal.Parse(g.Element("Sales").Value)),
MinSales = grps.Min(g => decimal.Parse(g.Element("Sales").Value))
};
foreach (var result in results)
{
Console.WriteLine("Category - " + result.Key);
Console.WriteLine("Total Sales : " + result.TotalSales + " Average Sales : " + result.AvgSales + " Maximum Sales : " + result.MaxSales + " Minimum Sales : " + result.MinSales);
Console.WriteLine("ID\t\t\tName\t\t\tCategory\tSales");
foreach (XElement Customer in result.Values)
{
Console.WriteLine(
Customer.Element("Id").Value + "\t\t" +
Customer.Element("Name").Value + "\t\t" +
Customer.Element("Category").Value + "\t\t" +
Customer.Element("Sales").Value + "\t\t"
);
}
}
}
static void ExecuteLinqWithDataTable()
{
DataTable dtCustomers = new DataTable("Customers");
dtCustomers.Columns.Add(new DataColumn("ID", typeof(string)));
dtCustomers.Columns.Add(new DataColumn("Name", typeof(string)));
dtCustomers.Columns.Add(new DataColumn("Category", typeof(string)));
dtCustomers.Columns.Add(new DataColumn("Sales", typeof(decimal)));
Random rnd = new Random();
for (int i = 0; i < 25; i++)
{
DataRow dr = dtCustomers.NewRow();
dr["ID"] = "Cust_" + (i + 1);
dr["Name"] = "Customer-" + (i + 1);
dr["Category"] = "Cat_" + ((i + 1) % 6);
dr["Sales"] = rnd.Next(500, 1000);
dtCustomers.Rows.Add(dr);
}
var results = from p in dtCustomers.AsEnumerable()
group p by p.Field<string>("Category") into grps
select new
{
Key = grps.Key,
Values = grps,
TotalSales = grps.Sum(g => g.Field<decimal>("Sales")),
Total = grps.Count(),
AvgSales = grps.Average(g => g.Field<decimal>("Sales")),
MaxSales = grps.Max(g => g.Field<decimal>("Sales")),
MinSales = grps.Min(g => g.Field<decimal>("Sales"))
};
foreach (var result in results)
{
Console.WriteLine("Category - " + result.Key);
Console.WriteLine("Total Sales : " + result.TotalSales + " Average Sales : " + result.AvgSales + " Maximum Sales : " + result.MaxSales + " Minimum Sales : " + result.MinSales);
Console.WriteLine("ID\t\tName\t\t\tCategory\tSales");
foreach (DataRow Customer in result.Values)
{
Console.WriteLine(
Customer["ID"] + "\t\t" +
Customer["Name"] + "\t\t" +
Customer["Category"] + "\t\t" +
Customer["Sales"] + "\t\t"
);
}
}
}
static void ExecuteLinqWithEntities()
{
Random rnd = new Random();
List<Customer> Customers = new List<Customer>();
for (int i = 0; i < 25; i++)
Customers.Add(new Customer
{
ID = "Cust" + (i + 1),
Category = "Cat_" + ((i + 1) % 6),
Name = "Customer_" + (i + 1),
Sales = rnd.Next(500, 1000)
});
var results = from p in Customers
group p by p.Category into grps
select new
{
Key = grps.Key,
Values = grps,
TotalSales = grps.Sum(g => g.Sales),
Total = grps.Count(),
AvgSales = grps.Average(g => g.Sales),
MaxSales = grps.Max(g => g.Sales),
MinSales = grps.Min(g => g.Sales),
};
foreach (var result in results)
{
Console.WriteLine("Category - " + result.Key);
Console.WriteLine("Total Sales : " + result.TotalSales + " Average Sales : " + result.AvgSales + " Maximum Sales : " + result.MaxSales + " Minimum Sales : " + result.MinSales);
Console.WriteLine("ID\t\tName\t\t\tCategory\tSales");
foreach (Customer Customer in result.Values)
{
Console.WriteLine(
Customer.ID + "\t\t" +
Customer.Name + "\t\t" +
Customer.Category + "\t\t" +
Customer.Sales + "\t\t"
);
}
}
}
}
public class Customer
{
public string ID { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public decimal Sales { get; set; }
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.