2011年7月21日 星期四

C# 有 Lambda 真好用

很久很久以前(其實也沒多久前),
如果我們想要在欄位改變之前記下他的值,
然後提供後面其他的函數使用的話,
通常都會在改變之前記錄到一個全域的變數去,
然後在要使用的時候再從那個全域的變數讀出來;
不過有了 Lambda 之後我們有更簡潔的寫法,
寫法如下:


        private void Func1()
        {

            string keep = "";
            datatable.ColumnChanging += (s, e) =>
            {
                if (e.Column.ColumnName == "column1")
                {
                    keep = e.Row["column1"].ToString();
                }
            };


            datatable.ColumnChanged += (s, e) =>
            {
                if (e.Column.ColumnName == "column1")
                {
                    if (e.Row.Field<string>("column2") == keep)
                    {
                        e.Row["column2"] = e.ProposedValue.ToString();
                    }
                }
            };
        }


利用 Lambda ,我們只需要在掛上事件的地方宣告一個變數(keep),
然後在 ColumnChanging 的時候把改變之前的資料存入(keep),
然後在 ColumnChanged 的時候拿出來比對就可以了。
其實原理事一樣的,但是寫法就簡潔多了!

可以參考這裡【Lambda 運算式 (C# 程式設計手冊)】

沒有留言:

張貼留言