你知道为什么val的这个引用在这个查询中做了共享选择ID吗?
以下是代码:
lst = new List<IQueryable<tblProduct>>();
int choiceID = 30;
lst.Add(from t in originalQuery
where t.tblProductChoiceTag.Any(c => c.ChoiceID == choiceID)
select t);
choiceID = 31;
lst.Add(from t in originalQuery
where t.tblProductChoiceTag.Any(c => c.ChoiceID == choiceID)
select t);
IQueryable<tblProduct> q = null;
bool first = true;
foreach (var tquery in lst)
{
if (first)
{
q = tquery;
first = false;
}
else
{ //the next one combine it
q = q.Union(tquery);
}
}
答案 0 :(得分:1)
您已捕获choiceID
变量。请记住,(a)查询执行是延迟的,(b)闭包捕获变量,而不是值。在您的情况下,您基本上希望为每个查询使用不同的变量,或者只是编码变量所代表的数字。