使用 lambda 表达式设置组合框数据源 c# windows Forms 应用程序
using lambda expression to set combo box data source c# windows Forms application
给定以下实例变量
cboBankAccountId.DataSource = db.BankAccounts.Where(x => x.BankAccountId).ToList();
假设我的 table 名称和属性都是正确的...有人可以向我解释为什么这种分配数据源的方式不适用于 windows 表单应用程序。
但是我在其他帖子中看到以下内容(以及我在我的项目中使用的内容)有效。
现在这仅仅是因为组合框属性是如何在 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 扩展方法的工作原理。
给定以下实例变量
cboBankAccountId.DataSource = db.BankAccounts.Where(x => x.BankAccountId).ToList();
假设我的 table 名称和属性都是正确的...有人可以向我解释为什么这种分配数据源的方式不适用于 windows 表单应用程序。
但是我在其他帖子中看到以下内容(以及我在我的项目中使用的内容)有效。
现在这仅仅是因为组合框属性是如何在 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 扩展方法的工作原理。