在 WinForms 開發中,常遇到需要一次性檢測大量 CheckBox 控制項是否被勾選,並將勾選項目的資料寫入 SQL 資料庫的需求。若逐個撰寫事件處理或輪詢,程式碼不僅冗長,維護成本也極高。本文示範如何利用 LINQ 簡潔地完成這項任務。
foreach (CheckBox cb in this.Controls.OfType<CheckBox>().Where(x => x.Checked))
{
string s = cb.Text; // 取得勾選項目的文字,據此組裝 SQL 參數
// 執行資料庫插入操作
}
CheckBox 型別的控制項。Checked 屬性為 true 的項目。Text 或 Tag 等識別資訊,組裝參數化 SQL 執行插入。GetAllControls() 擴充方法取得完整控制項樹。SqlBulkCopy 或交易批次提交以提升效能。透過 LINQ 的鏈式語法,我們僅需幾行程式碼即可優雅地解決「百個 CheckBox 狀態判斷與入庫」的問題,大幅提升可讀性與維護性。