using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using System.IO;
using
System.Data;
namespace
LinqExample1
{
class Program
{
static void Main(string[]
args)
{
FindAggregate();
}
public static IEnumerable<string> ReadAsLines(string
filename)
{
using
(var reader = new
StreamReader(filename))
while
(!reader.EndOfStream)
yield
return reader.ReadLine();
}
public static string
FindAggregate()
{
try
{
var
filename = "E:\\sample.txt";
var
reader = ReadAsLines(filename);
//Define
Data Table
var
data = new DataTable();
//Add
Columns to Data Table
data.Columns.Add("Column1", typeof(string));
data.Columns.Add("Column2", typeof(string));
data.Columns.Add("Column3", typeof(string));
data.Columns.Add("Column4", typeof(int));
data.Columns.Add("Column5", typeof(string));
//Add
Rows to Data Table
foreach
(var record in
reader)
data.Rows.Add(record.Split('\t'));
//Run
Aggregate Query to find SUM of Column4 group by Column2
var
result_sum = from rowdata in data.AsEnumerable()
group rowdata by
rowdata["Column2"]
into groupData
select new
{
Group =
groupData.Key,
Sum =
groupData.Sum((r) => decimal.Parse(r["Column4"].ToString()))
};
//List
Sum Group By Column2
foreach
(var val in
result_sum)
{
Console.WriteLine("Column2 {0}, Total Value {1} \n", val.Group,
val.Sum);
}
//Find
Min and Max Date based on Column2
var
result_date = from rowdata in data.AsEnumerable()
group rowdata by
rowdata["Column2"]
into groupData
select new
{
type =
groupData.Key,
MinDate =
groupData.Min(record => record["Column5"]),
MaxDate =
groupData.Max(record => record["Column5"])
};
//List
MinDate, MaxDate Group By Column2
foreach
(var val in
result_date)
{
Console.WriteLine("Column2
Value {0}, Max Date {1} , Min Date {2} \n", val.type ,val.MaxDate,
val.MinDate);
}
Console.ReadKey();
return
"0";
}
catch
(Exception EX)
{
return
"-1";
}
}
}
}