星期一, 8月 25, 2014

[LINQ] SUM

網路問題
要利用 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);
            }
        }
    }
}
[LINQ] SUM

沒有留言:

張貼留言