網路問題
要利用 LINQ 找出整個 Table 的總合,延伸練習計算每個群組總合
using System.Data;
namespace LINQSum
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable("demo");
dt.Columns.Add("Pro", typeof(string));
dt.Columns.Add("cha", typeof(int));
dt.Rows.Add("A", 12);
dt.Rows.Add("B", 6);
dt.Rows.Add("A", 14);
dt.Rows.Add("C", 4);
dt.Rows.Add("B", 8);
Console.WriteLine("論壇問題:把 Table 內資料加總");
var TotalSum = dt.AsEnumerable().Sum(datarow => datarow.Field<int>("cha"));
Console.WriteLine("整個 Table 總合:{0}",TotalSum);
Console.WriteLine("-------------------------------");
Console.WriteLine("問題延伸:計算每個 Pro 群組總合");
// Linq 寫法
var query = from datarow in dt.AsEnumerable()
group datarow by datarow.Field<string>("Pro") into g
select new
{
Pro = g.Key,
TotalSum = g.Sum(r => r.Field<int>("cha"))
};
// Lambda 寫法
var query = dt.AsEnumerable().GroupBy(datarow => datarow.Field<string>("Pro")).Select(g => new { Pro = g.Key, TotalSum = g.Sum(r => r.Field<int>("cha")) });
foreach (var item in query)
{
Console.WriteLine("{0}-{1}", item.Pro, item.TotalSum);
}
}
}
}
沒有留言:
張貼留言