In diesem Beitrag möchte ich Anregungen geben, wie man effektiv mit LINQ-Queries arbeiten kann.
public static string[] CSV_CONTENT =new string[]
{
"Datum;Name;Distanz",
"1.1.2015;Ca;200",
"2.1.2015;We;300",
"2.1.2015;We;100",
"2.1.2015;Ca;150",
"12.2.2015;Ca;50",
};
static void ParseCSV()
{
// Skip Header:
IEnumerable<string> rowsWithContent = CSV_CONTENT.Skip(1);
// Split rows into columns:
IEnumerablee<string[]> data = rowsWithContent.Select(x => x.Split(';'));
// Filter all wrong rows:
IEnumerablee<string[]> correctData = data.Where(row => row.Length == 3 && row.All(cell=>!string.IsNullOrEmpty(cell)));
//Generate Datastructure:
var richData=correctData.Select(row=>
new {
DatePoint=DateTime.Parse(row[0]),
Name=row[1],
Distance=uint.Parse(row[2])
});
// Read out data:
Console.WriteLine("Total Minimum: {0} | Total Maximum: {1}", richData.Min(x => x.Distance), richData.Max(x => x.Distance));
var personResults = richData.GroupBy(x =>? x.Name);
foreach (var item in personResults)
{
Console.WriteLine("Result of: " + item.Key);
Console.WriteLine(" First entry: " + item.Min(x => x.DatePoint));
Console.WriteLine(" Last entry: " + item.Max(x => x.DatePoint));
Console.WriteLine(" Total distance: " + item.Sum(x => x.Distance));
}
}