我有var first = $('.fieldname:eq(0)').val()
var second = $('.fieldname:eq(1)').val()
的列表,对应于许多合同的ID。我们的想法是,用户可以添加“最喜欢的”' int
,其ID随后存储在数据库中。我为该人检索了列表,然后过滤了Contract
,因此只显示了收藏的DataGrid
。
如果我将Contract
硬编码添加到ID
列表中,则没有问题,就像这样;
Predicates
但是,当我尝试从包含criteria.Clear();
if (favouritesCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<ContractModel>(x => x.ID == 6966));
}
的{{1}}添加时。我是这样做的;
List<int>
开始时有一些事情让我很困惑。首先,IDs
会产生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
时,当我尝试这样做时,我只剩下一个空网格。
答案 0 :(得分:0)
尝试将favouriteContractList [i]放入变量中,如下所示:
if (favouritesCheckBox.IsChecked == true)
{
for (int i = 0; i <= 48; i++)
{
int id = favouriteContractList[i];
if (id != 0)
{
criteria.Add(new Predicate<ContractModel>(x => x.ID == id));
}
}
与延迟构建它的方式有关,导致它无法解决,就像你认为的那样。当它真正使用它时,它可能认为'我'是49。这可以解释为什么你不能让'我'超过49 - 这将超出你的50个整数的范围。
我刚注意到你说你有50个项目并且不能做'i&lt; = 50',因为索引从0开始,i = 50是第51个项目(不存在)。