gpt4 book ai didi

LINQ 抛出查询嵌套太深异常

转载 作者:行者123 更新时间:2023-12-02 02:17:23 25 4
gpt4 key购买 nike

我有以下类和对象

Product{int ProdId{get; set;}, string ProdDesc{get; set;}}

IQueryable<Product> products = ProductRepository.GetAllProducts();

List<int> filteredProdIds = new List<int>();

GetAllProducts()方法对一些 EF 类 执行几个连接并返回 IQueryable<Product>目的。我已经测试过它是否会返回预期值并且确实会返回。

来自 products我想获取所有具有 ProdId 的记录在 filteredProdIds (假设 filteredProdIds 已经被 Ids 填充):

products = products.Where(p => filteredProdIds.Any(fp => fp.Equals(p.ProdId)));

当我启动我的应用程序时,它抛出一个异常

您的 SQL 语句的某些部分嵌套得太深。重写查询或将其分解为更小的查询。

我尝试用 LINQPad 验证查询,方法是替换 GetAllProducts()具有等效数据库 View 的方法,并且有效。

这个异常的原因是什么?

更新

filteredProductIds 是通过这个方法填充的:

IEnumerable<int> filteredProductIds = products.Select(p => p.partId).Distinct().ToList();

我找到了避免此异常的方法,但必须有更简洁的解决方案:

foreach (var filteredProdId in filteredProdIds)
{
product.Union(product.Where(p => p.ProdId.Equals(filteredProdId)));
}
product.Distinct();

最佳答案

var filteredProdIds = FilterIds().ToArray();
var products = ProductRepository.GetAllProducts().Where(p => filteredProdIds.Contains(p.ProdId));

关于LINQ 抛出查询嵌套太深异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838717/

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