Linq查询一遍又一遍地返回相同的结果

时间:2017-11-03 11:31:46

标签: c# linq-to-sql

我有以下linq查询反复返回相同的结果,即使“cptAuxList”变量正在改变:

    static Func<VBANKDataContext, decimal, IQueryable<SldValue>> GetSldAll = CompiledQuery.Compile((VBANKDataContext VB, decimal date) =>
        (from cpt in VB.AGSFCA
         where cptAuxList.Contains(cpt.CPTAUX)
         && cpt.FINPRD == date
         select new SldValue() {
            AUX = cpt.CPTAUX,
            SNS = cpt.SNSSLD,
            SLD = cpt.SLDCPT
         })
    );

每隔2000个唯一值存储该列表:

    static void AddIfNotContains(string CPTAUX)
    {
        string cptAuxToAdd = CPTAUX.Trim();

        if (!cptAuxList.Contains(cptAuxToAdd) && !cptAuxDone.Contains(cptAuxToAdd))
        {
            cptAuxList.Add(cptAuxToAdd);

            if (cptAuxList.Count >= 2000)
            {
                VBANKDataContext VB = new VBANKDataContext();
                List<SoldeValue> auxToSldTemp = GetSoldeAll(VB, DateDernArt).ToList();
                auxToSld.AddRange(auxToSldTemp);

                cptAuxDone.AddRange(cptAuxList);
                cptAuxList.Clear();
            }
        }
    }

变量以这种方式声明:

 static List<string> cptAuxList = new List<string>();

似乎发生的是第一次调用“GetSldAll”,它按预期工作,然后是下一次调用,它返回与第一次相同的结果,就像cptAuxList列表中包含的值不一样变化

1 个答案:

答案 0 :(得分:1)

您定义的唯一变量似乎是日期。其他所有内容都是在编译时获取的。这就是编译的重点:重用。

如果您还需要cptAuxList成为变量,则需要将其定义为一个变量。