使用lambda表达式来设置组合框的数据来源的C#Windows窗体应用程序
给出下面的实例变量使用lambda表达式来设置组合框的数据来源的C#Windows窗体应用程序
cboBankAccountId.DataSource = db.BankAccounts.Where(x => x.BankAccountId).ToList();
允许假设我的表名和属性是正确的......可为什么有人这样向我解释分配数据源不适用于Windows窗体应用程序。
但是我在其他文章中看到以下内容(以及我在项目中使用的内容)的作用。
现在是这仅仅是因为组合框属性如何分配在Windows窗体与Web窗体?
cboBankAccountId = db.BankAccounts;
cboBankAccountId.ValueMember = "BankAccountId";
cboBankAccountId.DisplayMember = "FullName";
谢谢... 和感恩节快乐!
ComboBox控件的数据源可以是数据库,Web服务或稍后可用于生成数据绑定控件的对象。
代码的问题在于你的lambda表达式。 您的案例中的扩展方法“Where”需要Func<BankAccounts, bool>
类型的代理。即,您必须通过一个将BankAccounts作为输入的委托,并将bool作为用于过滤结果的输出。
所以,如果你想找出BankAccounts为1的编号,您的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();
正如你所看到的,所有你需要为p屁股的Where方法是一种可用于过滤结果的方法。然后,列表中的每个项目都会通过此方法运行,并且只有通过测试的项目才会返回。这就是LINQ中的Where扩展方法的工作原理。
我明白了......对不起,我忘了我需要一个值来比较表达式...... – sneufeld
其中(x => x.BankAccountId),您的回账账号是一个布尔值吗? – user6144226
我在这里看到我需要一个值来比较我的表情...... – sneufeld