ファイルを入力し店舗別売上を集計する。
1、プログラム
:Program.cs
using System;
using System.Collections.Generic;
using System.IO;
namespace Sec0225
{
class Program
{
static void Main(string[] args)
{
SalesCounter sales = new SalesCounter(ReadSales("sales.csv"));
Dictionary<string,int> amountPerStore = sales.GetPerStoreSales();
foreach(KeyValuePair<string,int>obj in amountPerStore){
Console.WriteLine("{0}{1}",obj.Key,obj.Value);
}
}
static List<Sale>ReadSales(string filePath){
List<Sale>sales = new List<Sale>();
string[] lines = File.ReadAllLines(filePath); //テキストファイル読む
foreach(string line in lines){ //1行づつ処理
string[]items = line.Split(','); //行を分解
Sale sale = new Sale{ //分解したデータからオブジェクト作成
ShopName = items[0],
ProductCategory = items[1],
Amount = int.Parse(items[2])
};
sales.Add(sale); //オブジェクトをリストに追加
}
return sales; //結果を返す
}
}
}
2.クラス
:Sale.cs
using System;
namespace Sec0225{
public class Sale{
public string ShopName { get; set; }
public string ProductCategory { get; set; }
public int Amount { get; set; }
}
}
:SalesCounter.cs
using System;
using System.Collections.Generic;
namespace Sec0225{
public class SalesCounter{
private List<Sale> _sales;
public SalesCounter(List<Sale>sales){
_sales = sales;
}
public Dictionary<string,int> GetPerStoreSales(){
Dictionary<string,int> dict = new Dictionary<string, int>();
foreach(Sale sale in _sales){
if(dict.ContainsKey(sale.ShopName))
dict[sale.ShopName]+=sale.Amount;
else
dict[sale.ShopName]=sale.Amount;
}
return dict;
}
}
}