【发布时间】:2016-07-03 15:30:10
【问题描述】:
我有int 的列表,它们对应于许多合同的 ID。这个想法是用户可以添加一个“最喜欢的”Contract,然后将其 ID 存储在数据库中。我检索那个人的列表,然后过滤掉DataGrid,所以只有最喜欢的Contract 显示。
如果我将硬编码的ID 添加到Predicates 的列表中,就没有问题,就像这样;
criteria.Clear();
if (favouritesCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<ContractModel>(x => x.ID == 6966));
}
但是,当我尝试从包含IDs 的List<int> 添加时。我就是这样做的;
if (favouritesCheckBox.IsChecked == true)
{
for (int i = 0; i <= 48; i++)
{
if (favouriteContractList[i] != 0)
{
criteria.Add(new Predicate<ContractModel>(x => x.ID == favouriteContractList[i]));
}
}
}
从一开始就有一些事情让我感到困惑。首先,favouriteContractList.Count 的结果是50,但是我做不到for (int i = 0; i <= 50; i++)。其次,我已经在整个循环中打印出favouriteContractList[i].ToString(),并且IDs 的存储似乎没有问题。但是,当我检查我的ComboBox 以过滤DataGrid 时,当我尝试这样做时,我只剩下一个空网格。
【问题讨论】:
-
它在 .NET 3.5 上吗?
-
不回答您的问题,但首先会简化并避免一些问题,请使用 foreach(int num in favouriteContractList.Where(n => n != 0) ) { criteria.Add(new Predicate
(x => x.ID == num); } -
@sll 感谢您的帮助,我会添加它以避免混淆。
标签: c# wpf list datagrid predicate