从List <int>添加时,谓词标准不起作用

时间:2016-03-17 10:32:56

标签: c# wpf list datagrid predicate

我有var first = $('.fieldname:eq(0)').val() var second = $('.fieldname:eq(1)').val() 的列表,对应于许多合同的ID。我们的想法是,用户可以添加“最喜欢的”&#39; 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时,当我尝试这样做时,我只剩下一个空网格。

1 个答案:

答案 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个项目(不存在)。