[英]C# Forms App - Combo Box with an Array of strings as the Data source, how to set combo box value based on variable
[英]using lambda expression to set combo box data source c# windows Forms application
給定以下實例變量
cboBankAccountId.DataSource = db.BankAccounts.Where(x => x.BankAccountId).ToList();
讓我們假設我的表名和屬性都是正確的...有人可以向我解釋為什么這種分配數據源的方法不適用於Windows Form應用程序。
但是我在其他帖子中看到以下內容(以及我在項目中使用的內容)有效。
現在這僅僅是因為如何在Windows窗體和Web窗體中分配組合框屬性?
cboBankAccountId = db.BankAccounts;
cboBankAccountId.ValueMember = "BankAccountId";
cboBankAccountId.DisplayMember = "FullName";
謝謝...,感恩節快樂!
ComboBox控件的數據源可以是數據庫,Web服務或以后可用於生成數據綁定控件的對象。
您的代碼問題出在您的lambda表達式中。 在您的情況下,擴展方法“ Where”需要類型為Func<BankAccounts, bool>
的委托。 即,您必須傳遞一個委托,該委托將BankAccounts作為輸入,並給bool作為輸出,用於過濾結果。
因此,如果您想找出ID為1的BankAccounts,則lambda表達式將如下所示:
cboBankAccountId.DataSource = db.BankAccounts.Where(x => x.BankAccountId == 1).ToList();
如果您不熟悉Lambda表達式,也可以將其翻譯為:
cboBankAccountId.DataSource = db.BankAccounts.Where((BankAccounts x) =>
{
return x.BankAccountId == 1;
}).ToList();
或完整版本:
public bool Filter(BankAccountId id)
{
bool filterPassed;
if(id == 1)
filterPassed = true;
else
filterPassed = false;
return filterPassed;
}
cboBankAccountId.DataSource = db.BankAccounts.Where(Filter).ToList();
如您所見,傳遞給Where方法所需要的是一個可以用來過濾結果的方法。 然后,列表中的每個項目都將通過此方法運行,並且僅返回通過測試的項目。 這就是LINQ中Where擴展方法的工作方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.