我有以下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列表中包含的值不一样变化
答案 0 :(得分:1)
您定义的唯一变量似乎是日期。其他所有内容都是在编译时获取的。这就是编译的重点:重用。
如果您还需要cptAuxList
成为变量,则需要将其定义为一个变量。