很久很久以前(其實也沒多久前),
如果我們想要在欄位改變之前記下他的值,
然後提供後面其他的函數使用的話,
通常都會在改變之前記錄到一個全域的變數去,
然後在要使用的時候再從那個全域的變數讀出來;
不過有了 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# 程式設計手冊)】
沒有留言:
張貼留言