gpt4 book ai didi

c# - IQueryable对象的foreach循环问题

转载 作者:行者123 更新时间:2023-11-30 15:48:05 24 4
gpt4 key购买 nike

我们可以为 IQueryable 对象使用 foreach 循环吗?

我想做如下事情:

query = IQueryable<Myclass> = objDataContext.Myclass; // objDataContext is an object of LINQ datacontext class

int[] arr1 = new int[] { 3, 4, 5 };

foreach (int i in arr1)
{
query = query.Where(q => (q.f_id1 == i || q.f_id2 == i || q.f_id3 == i));
}

每次更改 i 的值时,我都会得到错误的输出。

最佳答案

您面临的问题是延迟执行,您应该能够找到很多这方面的信息,但基本上没有任何代码正在执行,直到您真正尝试从 IQueryable 读取数据(将其转换为 IEnumerable或列表或其他类似操作)。这意味着当 i 设置为最终值时,这一切都发生在 foreach 完成之后。

如果我没记错的话,您可以做的一件事是在 for 循环中初始化一个新变量,如下所示:

foreach (int i in arr1)
{
int tmp = i;
query = query.Where(q => (q.f_id1 == tmp || q.f_id2 == tmp || q.f_id3 == tmp));
}

通过将其放入每个循环重新创建的新变量中,在执行 IQueryable 之前不应更改该变量。

关于c# - IQueryable对象的foreach循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com