在整数中按值引用是覆盖我的linq查询

本文关键字:覆盖 我的 linq 查询 引用 整数 | 更新日期: 2023-09-27 17:49:33

你知道为什么这个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);
    }
}

在整数中按值引用是覆盖我的linq查询

您已经捕获了choiceID变量。请记住:(a)查询执行被延迟,(b)闭包捕获变量,而不是值。在您的情况下,您基本上希望为每个查询使用不同的变量,或者只是在变量所表示的数字中编码。